##Author: guochangquan ##Copyright 202207 ##company: NuProbe function usage() { echo "Usage: $0 [ -i ] [ -l ] [ -o ] [ -c ] [ -x ] [ -r ] " echo "-i Input fastq dir.File structure follow:fq_dir/sample/sample_R1/2.fastq.gz" echo "-l Sample list, per line for one SampleName and Sample_Panel[MBY2|FeBY2]" echo "-o FMBY2 analysis output dir" echo "-c FMBY2 CNV analysis outdir.default:analysis_dir/cnv_FMBY2" echo "-x FMBY2 scripts dir" echo "-r FMBY2 Result dir" } if [ $# -eq 0 ] then usage exit fi script_dir=$(cd "$(readlink -f "$0" | xargs dirname)"; pwd) while getopts ":x:i:l:c:r:o:h" opt; do case $opt in x) script_dir=$OPTARG ;; i) fq_dir=$OPTARG ;; l) sam_list=$OPTARG ;; o) out_dir=$OPTARG ;; c) cnv_dir=$OPTARG ;; r) res_dir=$OPTARG ;; h) usage exit ;; \?) echo "Invalid option: -$OPTARG" usage exit ;; esac done echo "Input FASTQ dir:$fq_dir" echo "FMBY2 analysis output dir:$out_dir" echo "FMBY2 CNV analysis dir:$cnv_dir" echo "Sample List:$sam_list" echo "FMBY2 scripts dir:$script_dir" ## 测试输入路径/文件是否正确 if [ ! -d $fq_dir ] then echo "Input fastq dir does NOT exist! " echo "Please check $fq_dir." exit fi if [ ! -f $sam_list ] then echo "Sample List does NOT exist! " echo "Please check $sam_list." exit fi test -d $out_dir || mkdir -p $out_dir test -d $out_dir/log || mkdir -p $out_dir/log if [ -d $cnv_dir ] then echo "FMBY2 CNV Outdir exist!" echo "Please check!" #exit else mkdir -p $cnv_dir mkdir -p $cnv_dir/AZF_call/img fi for sample in `cut -f1 $sam_list` do echo "Sample Checking: " $sample export SAM=$sample 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/' ` 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/' ` 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 ` 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 ` echo $sample "FASTQ1:" $fq1 ## ONLY ONE FASTQ1/FASTQ2 file for SAMPLE if [ -z $fq1 ]; then echo "Cannot find FASTQ1 file for $sample" exit elif [ $nfq1 -gt 1 ]; then echo "More Than ONE FASTQ1 file for $sample" exit fi if [ -z $fq2 ]; then echo "Cannot find FASTQ2 file for $sample" exit elif [ $nfq2 -gt 1 ]; then echo "More Than ONE FASTQ2 file for $sample" exit fi if [ -d $out_dir/${sample} ] then echo -e "Directory $out_dir/${sample} exists, Please check. Exit!" echo -e "${sample} quit!" #exit else mkdir $out_dir/${sample} -p fi done if [ ! -d $res_dir ] then echo "Result Directory NOT exists, Please check. Exit!" exit else test -d $res_dir/MBY2-AZF || mkdir $res_dir/MBY2-AZF test -d $res_dir/QC || mkdir $res_dir/QC test -d $res_dir/cnv || mkdir $res_dir/cnv test -d $res_dir/yesuan || mkdir $res_dir/yesuan test -d $res_dir/CFTR_intron9 || mkdir $res_dir/CFTR_intron9 fi test -s $out_dir/$sam_list || cp $sam_list $out_dir/ sams=(`cut -f1 $sam_list`) num=${#sams[@]} mindx=` expr $num - 1 ` log=$out_dir/log/FMBY2 if [ $num -lt 2 ] then 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` 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 else 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` 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 ` 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` 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 fi