Skip to content

Commit 01623d6

Browse files
committed
Update all code using macs2 to use macs3, also docs
1 parent dabbe8c commit 01623d6

19 files changed

+127
-105
lines changed

CITATIONS.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646

4747
> Heinz S, Benner C, Spann N, Bertolino E, Lin YC, Laslo P, Cheng JX, Murre C, Singh H, Glass CK. Simple combinations of lineage-determining transcription factors prime cis-regulatory elements required for macrophage and B cell identities. Mol Cell. 2010 May 28;38(4):576-89. doi: 10.1016/j.molcel.2010.05.004. PubMed PMID: 20513432; PubMed Central PMCID: PMC2898526.
4848
49-
- [MACS2](https://www.ncbi.nlm.nih.gov/pubmed/18798982/)
49+
- [MACS3](https://www.ncbi.nlm.nih.gov/pubmed/18798982/)
5050

5151
> Zhang Y, Liu T, Meyer CA, Eeckhoute J, Johnson DS, Bernstein BE, Nusbaum C, Myers RM, Brown M, Li W, Liu XS. Model-based analysis of ChIP-Seq (MACS). Genome Biol. 2008;9(9):R137. doi: 10.1186/gb-2008-9-9-r137. Epub 2008 Sep 17. PubMed PMID: 18798982; PubMed Central PMCID: PMC2592715.
5252

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ You can find numerous talks on the [nf-core events page](https://nf-co.re/events
5959
5. Generate gene-body meta-profile from bigWig files ([`deepTools`](https://deeptools.readthedocs.io/en/develop/content/tools/plotProfile.html))
6060
6. Calculate genome-wide IP enrichment relative to control ([`deepTools`](https://deeptools.readthedocs.io/en/develop/content/tools/plotFingerprint.html))
6161
7. Calculate strand cross-correlation peak and ChIP-seq quality measures including NSC and RSC ([`phantompeakqualtools`](https://github.com/kundajelab/phantompeakqualtools))
62-
8. Call broad/narrow peaks ([`MACS2`](https://github.com/macs3-project/MACS))
62+
8. Call broad/narrow peaks ([`MACS3`](https://github.com/macs3-project/MACS))
6363
9. Annotate peaks relative to gene features ([`HOMER`](http://homer.ucsd.edu/homer/download.html))
6464
10. Create consensus peakset across all samples and create tabular file to aid in the filtering of the data ([`BEDTools`](https://github.com/arq5x/bedtools2/))
6565
11. Count reads in consensus peaks ([`featureCounts`](http://bioinf.wehi.edu.au/featureCounts/))

assets/multiqc/frip_score_header.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#id: 'frip_score'
2-
#section_name: 'MERGED LIB: MACS2 FRiP score'
2+
#section_name: 'MERGED LIB: MACS3 FRiP score'
33
#description: "is generated by calculating the fraction of all mapped reads that fall
4-
# into the MACS2 called peak regions. A read must overlap a peak by at least 20% to be counted.
4+
# into the MACS3 called peak regions. A read must overlap a peak by at least 20% to be counted.
55
# See <a href='https://www.encodeproject.org/data-standards/terms/' target='_blank'>FRiP score</a>."
66
#plot_type: 'bargraph'
77
#anchor: 'frip_score'

assets/multiqc/peak_count_header.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#id: 'peak_count'
2-
#section_name: 'MERGED LIB: MACS2 peak count'
2+
#section_name: 'MERGED LIB: MACS3 peak count'
33
#description: "is calculated from total number of peaks called by
4-
# <a href='https://github.com/taoliu/MACS' target='_blank'>MACS2</a>"
4+
# <a href='https://github.com/taoliu/MACS' target='_blank'>MACS3</a>"
55
#plot_type: 'bargraph'
66
#anchor: 'peak_count'
77
#pconfig:

assets/multiqc_config.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ module_order:
7272
anchor: "mlib_featurecounts"
7373
info: "This section of the report shows featureCounts results for the number of reads assigned to merged library consensus peaks."
7474
path_filters:
75-
- "./macs2/featurecounts/*.summary"
75+
- "./macs3/featurecounts/*.summary"
7676

7777
report_section_order:
7878
peak_count:

assets/schema_input.json

+17-2
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,30 @@
3333
}
3434
]
3535
},
36+
"replicate": {
37+
"type": "integer",
38+
"errorMessage": "Replicate id not an integer!",
39+
"meta": ["replicate"]
40+
},
3641
"antibody": {
3742
"type": "string",
3843
"pattern": "^\\S+$",
39-
"errorMessage": "Antibody entry cannot contain spaces"
44+
"errorMessage": "Antibody entry cannot contain spaces",
45+
"dependentRequired": ["control"],
46+
"meta": ["antibody"]
4047
},
4148
"control": {
4249
"type": "string",
4350
"pattern": "^\\S+$",
44-
"errorMessage": "Control entry cannot contain spaces"
51+
"errorMessage": "Control entry cannot contain spaces",
52+
"dependentRequired": ["antibody", "control_replicate"],
53+
"meta": ["control"]
54+
},
55+
"control_replicate": {
56+
"type": "string",
57+
"pattern": "^\\S+$",
58+
"errorMessage": "Control entry cannot contain spaces",
59+
"meta": ["control_replicate"]
4560
}
4661
},
4762
"required": ["sample", "fastq_1"]

bin/macs2_merged_expand.py bin/macs3_merged_expand.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@
1717
############################################
1818

1919
Description = "Add sample boolean files and aggregate columns from merged MACS narrow or broad peak file."
20-
Epilog = """Example usage: python macs2_merged_expand.py <MERGED_INTERVAL_FILE> <SAMPLE_NAME_LIST> <OUTFILE> --is_narrow_peak --min_replicates 1"""
20+
Epilog = """Example usage: python macs3_merged_expand.py <MERGED_INTERVAL_FILE> <SAMPLE_NAME_LIST> <OUTFILE> --is_narrow_peak --min_replicates 1"""
2121

2222
argParser = argparse.ArgumentParser(description=Description, epilog=Epilog)
2323

2424
## REQUIRED PARAMETERS
25-
argParser.add_argument("MERGED_INTERVAL_FILE", help="Merged MACS2 interval file created using linux sort and mergeBed.")
25+
argParser.add_argument("MERGED_INTERVAL_FILE", help="Merged MACS3 interval file created using linux sort and mergeBed.")
2626
argParser.add_argument(
2727
"SAMPLE_NAME_LIST",
28-
help="Comma-separated list of sample names as named in individual MACS2 broadPeak/narrowPeak output file e.g. SAMPLE_R1 for SAMPLE_R1_peak_1.",
28+
help="Comma-separated list of sample names as named in individual MACS3 broadPeak/narrowPeak output file e.g. SAMPLE_R1 for SAMPLE_R1_peak_1.",
2929
)
3030
argParser.add_argument("OUTFILE", help="Full path to output directory.")
3131

@@ -76,7 +76,7 @@ def makedir(path):
7676
## sort -k1,1 -k2,2n <MACS_NARROWPEAK_FILE_LIST> | mergeBed -c 2,3,4,5,6,7,8,9,10 -o collapse,collapse,collapse,collapse,collapse,collapse,collapse,collapse,collapse > merged_peaks.txt
7777

7878

79-
def macs2_merged_expand(MergedIntervalTxtFile, SampleNameList, OutFile, isNarrow=False, minReplicates=1):
79+
def macs3_merged_expand(MergedIntervalTxtFile, SampleNameList, OutFile, isNarrow=False, minReplicates=1):
8080
makedir(os.path.dirname(OutFile))
8181

8282
combFreqDict = {}
@@ -208,7 +208,7 @@ def macs2_merged_expand(MergedIntervalTxtFile, SampleNameList, OutFile, isNarrow
208208
############################################
209209
############################################
210210

211-
macs2_merged_expand(
211+
macs3_merged_expand(
212212
MergedIntervalTxtFile=args.MERGED_INTERVAL_FILE,
213213
SampleNameList=args.SAMPLE_NAME_LIST.split(","),
214214
OutFile=args.OUTFILE,

bin/plot_macs2_qc.r bin/plot_macs3_qc.r

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ library(scales)
2020
option_list <- list(make_option(c("-i", "--peak_files"), type="character", default=NULL, help="Comma-separated list of peak files.", metavar="path"),
2121
make_option(c("-s", "--sample_ids"), type="character", default=NULL, help="Comma-separated list of sample ids associated with peak files. Must be unique and in same order as peaks files input.", metavar="string"),
2222
make_option(c("-o", "--outdir"), type="character", default='./', help="Output directory", metavar="path"),
23-
make_option(c("-p", "--outprefix"), type="character", default='macs2_peakqc', help="Output prefix", metavar="string"))
23+
make_option(c("-p", "--outprefix"), type="character", default='macs3_peakqc', help="Output prefix", metavar="string"))
2424

2525
opt_parser <- OptionParser(option_list=option_list)
2626
opt <- parse_args(opt_parser)

conf/modules.config

+17-17
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ if (!params.skip_plot_fingerprint) {
540540
}
541541

542542
process {
543-
withName: 'MACS2_CALLPEAK' {
543+
withName: 'MACS3_CALLPEAK' {
544544
ext.args = [
545545
'--keep-dup all',
546546
params.narrow_peak ? '' : "--broad --broad-cutoff ${params.broad_cutoff}",
@@ -551,7 +551,7 @@ process {
551551
].join(' ').trim()
552552
publishDir = [
553553
path: { [
554-
"${params.outdir}/${params.aligner}/merged_library/macs2",
554+
"${params.outdir}/${params.aligner}/merged_library/macs3",
555555
params.narrow_peak? '/narrow_peak' : '/broad_peak'
556556
].join('') },
557557
mode: params.publish_dir_mode,
@@ -562,14 +562,14 @@ process {
562562
withName: 'FRIP_SCORE' {
563563
ext.args = '-bed -c -f 0.20'
564564
publishDir = [
565-
path: { "${params.outdir}/${params.aligner}/merged_library/macs2/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/qc" },
565+
path: { "${params.outdir}/${params.aligner}/merged_library/macs3/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/qc" },
566566
enabled: false
567567
]
568568
}
569569

570570
withName: 'MULTIQC_CUSTOM_PEAKS' {
571571
publishDir = [
572-
path: { "${params.outdir}/${params.aligner}/merged_library/macs2/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/qc" },
572+
path: { "${params.outdir}/${params.aligner}/merged_library/macs3/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/qc" },
573573
mode: params.publish_dir_mode,
574574
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
575575
]
@@ -578,11 +578,11 @@ process {
578578

579579
if (!params.skip_peak_annotation) {
580580
process {
581-
withName: 'HOMER_ANNOTATEPEAKS_MACS2' {
581+
withName: 'HOMER_ANNOTATEPEAKS_MACS3' {
582582
ext.args = '-gid'
583583
ext.prefix = { "${meta.id}_peaks" }
584584
publishDir = [
585-
path: { "${params.outdir}/${params.aligner}/merged_library/macs2/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}" },
585+
path: { "${params.outdir}/${params.aligner}/merged_library/macs3/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}" },
586586
mode: params.publish_dir_mode,
587587
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
588588
]
@@ -591,20 +591,20 @@ if (!params.skip_peak_annotation) {
591591

592592
if (!params.skip_peak_qc) {
593593
process {
594-
withName: 'PLOT_MACS2_QC' {
595-
ext.args = '-o ./ -p macs2_peak'
594+
withName: 'PLOT_MACS3_QC' {
595+
ext.args = '-o ./ -p macs3_peak'
596596
publishDir = [
597-
path: { "${params.outdir}/${params.aligner}/merged_library/macs2/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/qc" },
597+
path: { "${params.outdir}/${params.aligner}/merged_library/macs3/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/qc" },
598598
mode: params.publish_dir_mode,
599599
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
600600
]
601601
}
602602

603603
withName: 'PLOT_HOMER_ANNOTATEPEAKS' {
604604
ext.args = '-o ./'
605-
ext.prefix = 'macs2_annotatePeaks'
605+
ext.prefix = 'macs3_annotatePeaks'
606606
publishDir = [
607-
path: { "${params.outdir}/${params.aligner}/merged_library/macs2/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/qc" },
607+
path: { "${params.outdir}/${params.aligner}/merged_library/macs3/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/qc" },
608608
mode: params.publish_dir_mode,
609609
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
610610
]
@@ -615,11 +615,11 @@ if (!params.skip_peak_annotation) {
615615

616616
if (!params.skip_consensus_peaks) {
617617
process {
618-
withName: 'MACS2_CONSENSUS' {
618+
withName: 'MACS3_CONSENSUS' {
619619
ext.when = { meta.multiple_groups || meta.replicates_exist }
620620
ext.prefix = { "${meta.id}.consensus_peaks" }
621621
publishDir = [
622-
path: { "${params.outdir}/${params.aligner}/merged_library/macs2/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/consensus/${meta.id}" },
622+
path: { "${params.outdir}/${params.aligner}/merged_library/macs3/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/consensus/${meta.id}" },
623623
mode: params.publish_dir_mode,
624624
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
625625
]
@@ -629,7 +629,7 @@ if (!params.skip_consensus_peaks) {
629629
ext.args = '-F SAF -O --fracOverlap 0.2'
630630
ext.prefix = { "${meta.id}.consensus_peaks" }
631631
publishDir = [
632-
path: { "${params.outdir}/${params.aligner}/merged_library/macs2/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/consensus/${meta.id}" },
632+
path: { "${params.outdir}/${params.aligner}/merged_library/macs3/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/consensus/${meta.id}" },
633633
mode: params.publish_dir_mode,
634634
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
635635
]
@@ -642,7 +642,7 @@ if (!params.skip_consensus_peaks) {
642642
ext.args = '-gid'
643643
ext.prefix = { "${meta.id}.consensus_peaks" }
644644
publishDir = [
645-
path: { "${params.outdir}/${params.aligner}/merged_library/macs2/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/consensus/${meta.id}" },
645+
path: { "${params.outdir}/${params.aligner}/merged_library/macs3/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/consensus/${meta.id}" },
646646
mode: params.publish_dir_mode,
647647
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
648648
]
@@ -651,7 +651,7 @@ if (!params.skip_consensus_peaks) {
651651
withName: 'ANNOTATE_BOOLEAN_PEAKS' {
652652
ext.prefix = { "${meta.id}.consensus_peaks" }
653653
publishDir = [
654-
path: { "${params.outdir}/${params.aligner}/merged_library/macs2/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/consensus/${meta.id}" },
654+
path: { "${params.outdir}/${params.aligner}/merged_library/macs3/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/consensus/${meta.id}" },
655655
mode: params.publish_dir_mode,
656656
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
657657
]
@@ -671,7 +671,7 @@ if (!params.skip_consensus_peaks) {
671671
].join(' ').trim()
672672
ext.prefix = { "${meta.id}.consensus_peaks" }
673673
publishDir = [
674-
path: { "${params.outdir}/${params.aligner}/merged_library/macs2/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/consensus/${meta.id}/deseq2" },
674+
path: { "${params.outdir}/${params.aligner}/merged_library/macs3/${params.narrow_peak ? '/narrow_peak' : '/broad_peak'}/consensus/${meta.id}/deseq2" },
675675
mode: params.publish_dir_mode,
676676
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
677677
]

0 commit comments

Comments
 (0)