From b39fcb4ccb0393c69eae5b9398a004bd41fe0aed Mon Sep 17 00:00:00 2001 From: Holly Ruess <s185797@biohpcwsc012.biohpc.swmed.edu> Date: Fri, 25 Jan 2019 15:26:08 -0600 Subject: [PATCH] added manual --- README.md | 137 +++++++++++++++++++++++++++++++++++++++++++ docs/CHIPseq.sh | 15 +++++ docs/flowchart.pdf | Bin 0 -> 25444 bytes docs/references.txt | 49 ++++++++++++++++ docs/xcor_header.txt | 17 ++++++ 5 files changed, 218 insertions(+) create mode 100644 docs/CHIPseq.sh create mode 100644 docs/flowchart.pdf create mode 100644 docs/references.txt create mode 100644 docs/xcor_header.txt diff --git a/README.md b/README.md index 0cbc9d4..3ceb173 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +# **CHIPseq Manual** +## Version 1.0.0 +## January 2, 2019 + # BICF ChIP-seq Pipeline [](https://git.biohpc.swmed.edu/BICF/Astrocyte/chipseq_analysis/commits/master) @@ -15,3 +19,136 @@ The pipeline uses [Nextflow](https://www.nextflow.io), a bioinformatics workflow This pipeline is primarily used with a SLURM cluster on the [BioHPC Cluster](https://biohpc.swmed.edu/). However, the pipeline should be able to run on any system that Nextflow supports. Additionally, the pipeline is designed to work with [Astrocyte Workflow System](https://astrocyte-test.biohpc.swmed.edu/static/docs/index.html) using a simple web interface. + +Current version of the software and issue reports are at +https://git.biohpc.swmed.edu/BICF/Astrocyte/chipseq_analysis + +To download the current version of the software +```bash +$ git clone git@git.biohpc.swmed.edu:BICF/Astrocyte/chipseq_analysis.git +``` + +## Input files +##### 1) Fastq Files + + You will need the full path to the files for the Bash Scipt + +##### 2) Design File + + The Design file is a tab-delimited file with 8 columns for Single-End and 9 columns for Paired-End. Letter, numbers, and underlines can be used in the names. However, the names can only begin with a letter. Columns must be as follows: + 1. sample_id a short, unique, and concise name used to label output files; will be used as a control_id if it is the control sample + 2. experiment_id biosample_treatment_factor + 3. biosample symbol for tissue type or cell line + 4. factor symbol for antibody target + 5. treatment symbol of treatment applied + 6. replicate a number, usually from 1-3 (i.e. 1) + 7. control_id sample_id name that is the control for this sample + 8. fastq_read1 name of fastq file 1 for SE or PC data + 9. fastq_read2 name of fastq file 2 for PE data + + + + See [HERE](https://git.biohpc.swmed.edu/BICF/Astrocyte/chipseq_analysis/blob/master/test_data/design_ENCSR729LGA_PE.txt) for an example design file, paired-end + + See [HERE](https://git.biohpc.swmed.edu/BICF/Astrocyte/chipseq_analysis/blob/master/test_data/design_ENCSR238SGC_SE.txt) for an example design file, single-end + +##### 3) Bash Script + + You will need to create a bash script to run the CHIPseq pipeline on [BioHPC](https://portal.biohpc.swmed.edu/content/) + + This pipeline has been optimized for the correct partition + + See [HERE](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/CHIPseq.sh) for an example bash script + + The parameters that must be specified are: + - --reads '/path/to/files/name.fastq.gz' + - --designFile '/path/to/file/design.txt', + - --genome 'GRCm38', 'GRCh38', or 'GRCh37' (if you need to use another genome contact the [BICF](mailto:BICF@UTSouthwestern.edu)) + - --pairedEnd 'true' or 'false' (where 'true' is PE and 'false' is SE; default 'false') + - --outDir (optional) path and folder name of the output data, example: /home2/s000000/Desktop/Chipseq_output + +## Pipeline + + There are 11 steps to the pipeline + 1. Check input files + 2. Trim raw reads with trim galore + 3. Aligned trimmed reads with bwa, and sorts/converts to bam with samtools + 4. Mark duplicates with sambamba, and filter reads with samtools + 5. Quality metrics with deep tools + 6. Calculate cross-correlation using phantompeaktools + 7. Call peaks with MACS + 8. Calculate consensus peaks + 9. Annotate Peaks + 10. Calculate Differential Binding Activity + 11. Motif Search Peaks + +See [FLOWCHART](https://git.biohpc.swmed.ed/bchen4/chipseq_analysis/raw/master/docs/flowchar.pdf) + +## Output Files +Folder | File | Description +--- | --- | --- +design | N/A | Inputs used for analysis; can ignore +trimReads | *_trimming_report.txt | report detailing how many reads were trimmed +trimReads | *_trimmed.fq.gz | trimmed fastq files used for analysis +alignReads | *.srt.bam.flagstat.qc | QC metrics from the mapping process +alignReads | *.srt.bam | sorted bam file +filterReads | *.dup.qc | QC metrics of find duplicate reads (sambamba) +filterReads | *.filt.nodup.bam | filtered bam file with duplicate reads removed +filterReads | *.filt.nodup.bam.bai | indexed filtered bam file +filterReads | *.filt.nodup.flagstat.qc | QC metrics of filtered bam file (mapping stats, samtools) +filterReads | *.filt.nodup.pbc.qc | QC metrics of library complexity +convertReads | *.filt.nodup.bedse.gz | bed alignment in BEDPE format +convertReads | *.filt.nodup.tagAlign.gz | bed alignent in BEDPE format, same as bedse unless samples are paired-end +experimentQC | coverage.pdf | plot to assess the sequencing depth of a given sample +experimentQC | *_fingerprint.pdf | plot to determine if the antibody-treatment enriched sufficiently +experimentQC | heatmeap_SpearmanCorr.pdf | plot of Spearman correlation between samples +experimentQC | heatmeap_PearsonCorr.pdf | plot of Pearson correlation between samples +experimentQC | sample_mbs.npz | array of multiple BAM summaries +crossReads | *.filt.nodup.tagAlign.15.tagAlign.gz.cc.plot.pdf | plot of cross-correlation to assess signal-to-noise ratios +crossReads | *.filt.nodup.tagAlign.15.tagAlign.gz.cc.qc | cross-correlation metrics. File [HEADER](https://git.biohpc.swmed.ed/bchen4/chipseq_analysis/raw/master/docs/xcor_header.txt) +callPeaksMACS | *.fc_signal.bw | bigwig data file; raw fold enrichment of sample/control +callPeaksMACS | *.pvalue_signal.bw | bigwig data file; sample/control signal adjusted for pvalue significance +callPeaksMACS | *_peaks.narrowPeak | peaks file; see [HERE](https://genome.ucsc.edu/FAQ/FAQformat.html#format12) for ENCODE narrowPeak header format +consensusPeaks | design_annotatePeaks.tsv | design file; can ignore +consensusPeaks | design_diffPeaks.csv | design file; can ignore +consensusPeaks | *.rejected.narrowPeak | peaks not supported by multiple testing (replicates and pseudo-replicates) +consensusPeaks | *.replicated.narrowPeak | peaks supported by multiple testing (replicates and pseudo-replicates) +consensusPeaks | unique_experiments.csv | design file; can ignore +peakAnnotation | *.chipseeker_annotation.csv | annotated narrowPeaks file +peakAnnotation | *.chipseeker_pie.pdf | pie graph of where narrow annotated peaks occur +peakAnnotation | *.chipseeker_upsetplot.pdf | upsetplot showing the count of overlaps of the genes with different annotated location +motifSearch | *_memechip/index.html | interactive HTML link of MEME output +motifSearch | sorted-*.replicated.narrowPeak | Top 600 peaks sorted by p-value; input for motifSearch +motifSearch | *_memechip/combined.meme | MEME identified motifs +diffPeaks | heatmap.pdf | Use only for replicated samples; heatmap of relationship of peak location and peak intensity +diffPeaks | normcount_peaksets.txt | Use only for replicated samples; peak set values of each sample +diffPeaks | pca.pdf | Use only for replicated samples; PCA of peak location and peak intensity +diffPeaks | *_diffbind.bed | Use only for replicated samples; bed file of peak locations between replicates +diffPeaks | *_diffbind.csv | Use only for replicated samples; CSV file of peaks between replicates + +## Common Quality Control Metrics + + These are the list of files that should be reviewed before continuing on with the CHIPseq experiment. If your experiment fails any of these metrics, you should pause and re-evaluate whether the data should remain in the study. + 1. filterReads/*.filt.nodup.pbc.qc: follow the ChiP-seq standards [HERE](https://www.encodeproject.org/chip-seq/); NRF>0.9, PBC1>0.9, and PBC2>10 + 2. experimentQC/*_fingerprint.pdf: make sure the plots information is correct for your antibody/input. See [HERE](https://deeptools.readthedocs.io/en/develop/content/tools/plotFingerprint.html) for more details. + 3. crossReads/*.filt.nodup.tagAlign.15.tagAlign.gz.cc.plot.pdf: make sure your sample data has the correct signal intensity and location. See [HERE](https://hbctraining.github.io/Intro-to-ChIPseq/lessons/06_QC_cross_correlation.html) for more details. + 4. crossReads/*.filt.nodup.tagAlign.15.tagAlign.gz.cc.qc: Column 9 (NSC) should be > 1.1 for experiment and < 1.1 for input. Column 10 (RSC) should be > 0.8 for experiment and < 0.8 for input. See [HERE](https://hbctraining.github.io/Intro-to-ChIPseq/lessons/06_QC_cross_correlation.html) for more details. + + +## Common Errors +If you find an error, please let the [BICF](mailto:BICF@UTSouthwestern.edu) know and we will add it here. + +## Programs and Versions + + python/3.6.1-2-anaconda [website](https://www.anaconda.com/download/#linux) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + trimgalore/0.4.1 [website](https://github.com/FelixKrueger/TrimGalore) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + cutadapt/1.9.1 [website](https://cutadapt.readthedocs.io/en/stable/index.html) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + bwa/intel/0.7.12 [website](http://bio-bwa.sourceforge.net/) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + samtools/1.6 [website](http://samtools.sourceforge.net/) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + sambamba/0.6.6 [website](http://lomereiter.github.io/sambamba/) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + bedtools/2.26.0 [website](https://bedtools.readthedocs.io/en/latest/) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + deeptools/2.5.0.1 [website](https://deeptools.readthedocs.io/en/develop/) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + phantompeakqualtools/1.2 [website](https://github.com/kundajelab/phantompeakqualtools) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + macs/2.1.0-20151222 [website](http://liulab.dfci.harvard.edu/MACS/) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + UCSC_userApps/v317 [website](https://genome.ucsc.edu/util.html) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + R/3.3.2-gccmkl [website](https://www.r-project.org/) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + meme/4.11.1-gcc-openmpi [website](http://meme-suite.org/doc/install.html?man_type=web) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + ChIPseeker [website](https://bioconductor.org/packages/release/bioc/html/ChIPseeker.html) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + DiffBind [website](https://bioconductor.org/packages/release/bioc/html/DiffBind.html) [citation](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt) + + +## Credits +This example worklow is derived from original scripts kindly contributed by the Bioinformatic Core Facility ([BICF](https://www.utsouthwestern.edu/labs/bioinformatics/)), in the [Department of Bioinformatics](https://www.utsouthwestern.edu/departments/bioinformatics/). + +## Citation +Please cite individual programs and versions used [HERE](https://git.biohpc.swmed.edu/bchen4/chipseq_analysis/raw/master/docs/references.txt). Also, please look out for our pipeline to be published in the future [HERE](https://zenodo.org/). + diff --git a/docs/CHIPseq.sh b/docs/CHIPseq.sh new file mode 100644 index 0000000..68aa87c --- /dev/null +++ b/docs/CHIPseq.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +#SBATCH --job-name=CHIPseq +#SBATCH --partition=super +#SBATCH --output=CHIPseq.%j.out +#SBATCH --error=CHIPseq.%j.err + +module load nextflow/0.31.0 +module add python/3.6.1-2-anaconda + +nextflow run workflow/main.nf \ +--reads '/path/to/*fastq.gz' \ +--designFile '/path/to/design.txt' \ +--genome 'GRCm38' \ +--pairedEnd 'true' diff --git a/docs/flowchart.pdf b/docs/flowchart.pdf new file mode 100644 index 0000000000000000000000000000000000000000..845c5fc6048d3b5eabea384a32cf1c75bb8c7024 GIT binary patch literal 25444 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%0A%o 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 literal 0 HcmV?d00001 diff --git a/docs/references.txt b/docs/references.txt new file mode 100644 index 0000000..363085d --- /dev/null +++ b/docs/references.txt @@ -0,0 +1,49 @@ +python/3.6.1-2-anaconda: +Anaconda (Anaconda Software Distribution, https://anaconda.com) + +trimgalore/0.4.1: +trimgalore/0.4.1 (https://github.com/FelixKrueger/TrimGalore) + +cutadapt/1.9.1: +Marcel, M. 2011. Cutadapt removes adapter sequences from high-throughput sequencing reads. EMBnet.journal 17(1):10-12. DOI: http://dx.doi.org/10.14806/ej.17.1.200 + +bwa/intel/0.7.12: +Li H., and R. Durbin. 2009. Fast and accurate short read alignment with Burrows-Wheeler Transform. Bioinformatics 25: 1754-60. + +samtools/1.6: +Li H., B. Handsaker, A. Wysoker, T. Fennell, J. Ruan, N. Homer, G. Marth, G. Abecasis, R. Durbin, and 1000 Genome Project Data Processing Subgroup. 2009. The Sequence alignment/map (SAM) format and SAMtools. Bioinformatics 25: 2078-9. + +sambamba/0.6.6: +Tarasov, A., A. J. Vilella, E. Cuppen, I. J. Nijman, and P. Prins. 2015 Sambamba: fast processing of NGS alignment formats. Bioinformatics 31(12): 2032-2034. doi:10.1093/bioinformatics/btv098. + +bedtools/2.26.0: +Quinlan, A. R., and I. M. Hall. 2010. BEDTools: a flexible suite of utilities for comparing genomic feautures. Bioinformatics 26(6): 841-842. doi:10.1093/bioinformatics/btq033 + +deeptools/2.5.0.1: +RamÃrez, F., D. P. Ryan, B. Grüning, V. Bhardwaj, F. Kilpert, A. S. Richter, S. Heyne, F. Dündar, and T. Manke. 2016. deepTools2: a next generation web server for deep-sequencing data analysis. Nucleic Acids Research 44: W160-165. doi: 10.1093/nar/gkw257. + +phantompeakqualtools/1.2: +Landt S. G., G. K. Marinov, A. Kundaje, et al. 2012. ChIP-seq guidelines and practices of the ENCODE and modENCODE consortia. Genome Res 9: 1813-31. doi: 10.1101/gr.136184.111. +Kharchenko P. K., M. Y. Tolstorukov, and P. J. Park. 2008. Design and analysis of ChIP-seq experiments for DNA-binding proteins. Nat Biotechnol 26(12): 1351-1359. + +macs/2.1.0-20151222: +Zhang Y., T. Liu, C. A. Meyer, J. Eeckhoute, D. S. Johnson, B. E. Bernstein, C. Nusbaum, R. M. Myers, M. Brown, W. Li, and X. S. Liu. 2008. Model-based Analysis of ChIP-Seq (MACS). Genome Biol 9: R137. + +UCSC_userApps/v317 +Kent W. J., A. S. Zweig, G. Barber, A. S. Hinrichs, and D. Karolchik. BigWig and BigBed: enabling browsing of large distributed data sets. Bioinformatics 26(17): 2204-2207. + +R/3.3.2-gccmkl: +R Core Team 2014. R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL http://www.R-project.org/. + +meme/4.11.1-gcc-openmpi: +Bailey T. L., M. Bodén, F. A. Buske, M. Frith, C. E. Grant, L. Clementi, J. Ren, W. W. Li, and W. S. Noble. 2009. MEME SUITE: tools for motif discovery and searching. Nucleic Acids Research 37: W202-W208. +Machanick P., and T. L. Bailey. 2011. MEME-ChIP: motif analysis of large DNA datasets. Bioinformatics 27(12): 1696-1697. + +R ChIPseeker: +Yu G., L. Wang, and Q. He. 2015. ChIPseeker: an R/Bioconductor package for ChIP peak annotation, comparison and visualization. Bioinformatics 31(14): 2382-2383. doi: 10.1093/bioinformatics/btv145. + +R DiffBind: +Stark R., and G. Brown. 2011. DiffBind: differential binding analysis of ChIP-Seq peak data. http://bioconductor.org/packages/release/bioc/vignettes/DiffBind/inst/doc/DiffBind.pdf. + +Ross-Innes C. S., R. Stark, A. E. Teschendorff, K. A. Holmes, H. R. Ali, M. J. Dunning, G. D. Brown, O. Gojis, I. O. Ellis, A. R. Green, S. Ali, S. Chin, C. Palmieri, C. Caldas, and J. S. Carroll. 2012. Differential oestrogen receptor binding is associated with clinical outcome in breast cancer. Nature 481: 389-393. http://www.nature.com/nature/journal/v481/n7381/full/nature10730.html. + diff --git a/docs/xcor_header.txt b/docs/xcor_header.txt new file mode 100644 index 0000000..c4c712b --- /dev/null +++ b/docs/xcor_header.txt @@ -0,0 +1,17 @@ +See https://github.com/crazyhottommy/phantompeakqualtools for more details + +COL1: Filename: tagAlign/BAM filename +COL2: numReads: effective sequencing depth i.e. total number of mapped reads in input file +COL3: estFragLen: comma separated strand cross-correlation peak(s) in decreasing order of correlation. + The top 3 local maxima locations that are within 90% of the maximum cross-correlation value are output. + In almost all cases, the top (first) value in the list represents the predominant fragment length. + If you want to keep only the top value simply run + sed -r 's/,[^\t]+//g' <outFile> > <newOutFile> +COL4: corr_estFragLen: comma separated strand cross-correlation value(s) in decreasing order (col2 follows the same order) +COL5: phantomPeak: Read length/phantom peak strand shift +COL6: corr_phantomPeak: Correlation value at phantom peak +COL7: argmin_corr: strand shift at which cross-correlation is lowest +COL8: min_corr: minimum value of cross-correlation +COL9: Normalized strand cross-correlation coefficient (NSC) = COL4 / COL8 +COL10: Relative strand cross-correlation coefficient (RSC) = (COL4 - COL8) / (COL6 - COL8) +COL11: QualityTag: Quality tag based on thresholded RSC (codes: -2:veryLow,-1:Low,0:Medium,1:High,2:veryHigh) -- GitLab