1. #!/bin/bash
    2. analysis_dir=$1
    3. config_file=$2
    4. number1=$3
    5. number2=$4
    6. conda activate chip
    7. mkdir -p {raw,clean,align,peaks,motif,qc,log}
    8. index=/home/yb77613/reference/index/bowtie/hg38
    9. # for config.txt
    10. # sampleName and fastq files(for single end)
    11. # input /home/vip28/data/public/wen_chipseq/raw/SRR3356385.fastq.gz
    12. # MYCN /home/vip28/data/public/wen_chipseq/raw/SRR3356386.fastq.gz
    13. # TWIST /home/vip28/data/public/wen_chipseq/raw/SRR3356388.fastq.gz
    14. cat $config_file |while read id
    15. do
    16. echo $id
    17. arr=($id)
    18. fq=${arr[1]}
    19. sample=${arr[0]}
    20. if((i%$number1==$number2))
    21. then
    22. ## step1: basic QC for fastq files
    23. if [ ! -f ok.fastp.$sample.status ]; then
    24. fastp -i $fq -o clean/${sample}.fq.gz \
    25. --thread=4 --length_required=36 --n_base_limit=6 \
    26. --compression=6 -R ${sample} \
    27. 1>log/log.fastp.${sample}.txt 2>&1
    28. fi ## end for if files
    29. if [ $? -eq 0 ]; then
    30. touch ok.fastp.$sample.status
    31. else
    32. echo "fastp failed" $sample
    33. fi
    34. fastqc $fq -O qc
    35. fastqc clean/${sample}.fq.gz -O qc
    36. ## step2: alignment
    37. if [ ! -f ok.bowtie2.$sample.status ]; then
    38. bowtie2 -p 4 -x $index -U clean/${sample}.fq.gz | \
    39. samtools sort -O bam -@ 4 -o - > align/${sample}.bam
    40. fi ## end for if files
    41. if [ $? -eq 0 ]; then
    42. touch ok.bowtie2.$sample.status
    43. else
    44. echo "bowtie2 failed" $sample
    45. fi
    46. ## step3: QC for bam files
    47. if [ ! -f ok.sambamba.$sample.status ]; then
    48. sambamba markdup -r align/${sample}.bam align/${sample}_rmd.bam
    49. fi ## end for if files
    50. if [ $? -eq 0 ]; then
    51. touch ok.sambamba.$sample.status
    52. else
    53. echo "sambamba failed" $sample
    54. fi
    55. samtools flagstat align/${sample}.bam > qc/${sample}.flagstat
    56. samtools flagstat align/${sample}_rmd.bam > qc/${sample}_rmd.flagstat
    57. ## step4: call peaks
    58. if [ ! -f ok.macs2.$sample.status ]; then
    59. macs2 callpeak -t align/${sample}_rmd.bam -f BAM -g hs -n ${sample}_rmd -B -q 0.01 --outdir peaks
    60. macs2 callpeak -t align/${sample}.bam -f BAM -g hs -n ${sample}_raw -B -q 0.01 --outdir peaks
    61. fi ## end for if files
    62. if [ $? -eq 0 ]; then
    63. touch ok.macs2.$sample.status
    64. else
    65. echo "macs2 failed" $sample
    66. fi
    67. fi # check the number1 number2
    68. i=$((i+1))
    69. done