{
  "chip.jsd": {
    "plot": {
      "path": "qc/${basename}",
      "table": "QC and logs/Jensen-Shannon distance plot",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"JSD\\nPlot\"]"
    }
  },
  "chip.align_ctl": {
    "bam": {
      "path": "align/ctl${i+1}/${basename}",
      "table": "Alignment/Control ${i+1}/Raw BAM from aligner",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"BAM\"]",
      "subgraph": "cluster_ctl${i+1}"
    },
    "samstat_qc": {
      "path": "qc/ctl${i+1}/${basename}",
      "table": "QC and logs/Control ${i+1}/SAMstats log for Raw BAM",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"SAMstats\\nQC\"]",
      "subgraph": "cluster_ctl${i+1}"
    }
  },
  "chip.filter_ctl": {
    "nodup_bam": {
      "path": "align/ctl${i+1}/${basename}",
      "table": "Alignment/Control ${i+1}/Filtered BAM",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Filt/deduped\\nBAM\"]",
      "subgraph": "cluster_ctl${i+1}"
    },
    "samstat_qc": {
      "path": "qc/ctl${i+1}/${basename}",
      "table": "QC and logs/Control ${i+1}/SAMstats log for filtered BAM",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"SAMstats\\nQC\"]",
      "subgraph": "cluster_ctl${i+1}"
    },
    "dup_qc": {
      "path": "qc/ctl${i+1}/${basename}",
      "table": "QC and logs/Control ${i+1}/Dup QC for filtered BAM"
    },
    "lib_complexity_qc": {
      "path": "qc/ctl${i+1}/${basename}",
      "table": "QC and logs/Control ${i+1}/Library complexity QC for filtered BAM",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"LibCmplx\\nQC\"]",
      "subgraph": "cluster_ctl${i+1}"
    },
    "mito_dup_log": {
      "path": "qc/ctl${i+1}/${basename}",
      "table": "QC and logs/Control ${i+1}/Mito dup log for filtered BAM"
    }
  },
  "chip.bam2ta_ctl": {
    "ta": {
      "path": "align/ctl${i+1}/${basename}",
      "table": "Alignment/Control ${i+1}/TAG-ALIGN",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"TAG-ALIGN\"]",
      "subgraph": "cluster_ctl${i+1}"
    }
  },
  "chip.pool_ta_ctl": {
    "ta_pooled": {
      "path": "align/pooled-ctl/${basename}",
      "table": "Alignment/Pooled control/TAG-ALIGN",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"TAG-ALIGN\"]",
      "subgraph": "cluster_pooled_ctl"
    }
  },
  "chip.align": {
    "bam": {
      "path": "align/rep${i+1}/${basename}",
      "table": "Alignment/Replicate ${i+1}/Raw BAM from aligner",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"BAM\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "samstat_qc": {
      "path": "qc/rep${i+1}/${basename}",
      "table": "QC and logs/Replicate ${i+1}/SAMstats log for Raw BAM",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"SAMstats\\nQC\"]",
      "subgraph": "cluster_rep${i+1}"
    }
  },
  "chip.filter": {
    "nodup_bam": {
      "path": "align/rep${i+1}/${basename}",
      "table": "Alignment/Replicate ${i+1}/Filtered BAM",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Filt/deduped\\nBAM\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "samstat_qc": {
      "path": "qc/rep${i+1}/${basename}",
      "table": "QC and logs/Replicate ${i+1}/SAMstats log for filtered BAM",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"SAMstats\\nQC\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "dup_qc": {
      "path": "qc/rep${i+1}/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Dup QC for filtered BAM"
    },
    "lib_complexity_qc": {
      "path": "qc/rep${i+1}/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Library complexity QC for filtered BAM",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"LibCmplx\\nQC\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "mito_dup_log": {
      "path": "qc/rep${i+1}/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Mito dup log for filtered BAM"
    }
  },
  "chip.bam2ta": {
    "ta": {
      "path": "align/rep${i+1}/${basename}",
      "table": "Alignment/Replicate ${i+1}/TAG-ALIGN",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"TAG-ALIGN\"]",
      "subgraph": "cluster_rep${i+1}"
    }
  },
  "chip.spr": {
    "ta_pr1": {
      "path": "align/rep${i+1}/pseudorep1/${basename}",
      "table": "Alignment/Replicate ${i+1}/Pseudoreplicate 1/TAG-ALIGN"
    },
    "ta_pr2": {
      "path": "align/rep${i+1}/pseudorep2/${basename}",
      "table": "Alignment/Replicate ${i+1}/Pseudoreplicate 2/TAG-ALIGN"
    }
  },
  "chip.pool_ta": {
    "ta_pooled": {
      "path": "align/pooled-rep/${basename}",
      "table": "Alignment/Pooled replicate/TAG-ALIGN",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"TAG-ALIGN\"]",
      "subgraph": "cluster_pooled_rep"      
    }
  },
  "chip.pool_ta_pr1": {
    "ta_pooled": {
      "path": "align/pooled-rep/pseudorep1/${basename}",
      "table": "Alignment/Pooled replicate/Pseudoreplicate 1/TAG-ALIGN"
    }
  },
  "chip.pool_ta_pr2": {
    "ta_pooled": {
      "path": "align/pooled-rep/pseudorep2/${basename}",
      "table": "Alignment/Pooled replicate/Pseudoreplicate 2/TAG-ALIGN"
    }
  },
  "chip.xcor": {
    "plot_png": {
      "path": "qc/rep${i+1}/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Cross-correlation Plot",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"XCOR\\nPlot\"]",
      "subgraph": "cluster_rep${i+1}"      
    },
    "score": {
      "path": "qc/rep${i+1}/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Cross-correlation score"
    },
    "fraglen": {
      "path": "qc/rep${i+1}/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Estimated fragment length"
    }
  },
  "chip.call_peak": {
    "peak": {
      "path": "peak/rep${i+1}/${basename}",
      "table": "Peak/Replicate ${i+1}/Raw narrowpeak",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Peak\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "bfilt_peak": {
      "path": "peak/rep${i+1}/${basename}",
      "table": "Peak/Replicate ${i+1}/Blacklist-filtered narrowpeak",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Peak\\n(bfilt)\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "bfilt_peak_bb": {
      "path": "peak/rep${i+1}/${basename}",
      "table": "Peak/Replicate ${i+1}/Blacklist-filtered narrowpeak (BigBed)"
    },
    "bfilt_peak_hammock": {
      "path": "peak/rep${i+1}/${basename}",
      "table": "Peak/Replicate ${i+1}/Blacklist-filtered narrowpeak (hammock)"
    },
    "frip_qc": {
      "path": "qc/rep${i+1}/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Fraction of peaks in reads"
    }
  },
  "chip.call_peak_pr1": {
    "peak": {
      "path": "peak/rep${i+1}/pseudorep1/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudoreplicate 1/Raw narrowpeak"
    },
    "bfilt_peak": {
      "path": "peak/rep${i+1}/pseudorep1/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudoreplicate 1/Blacklist-filtered narrowpeak"
    },
    "bfilt_peak_bb": {
      "path": "peak/rep${i+1}/pseudorep1/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudoreplicate 1/Blacklist-filtered narrowpeak (BigBed)"
    },
    "bfilt_peak_hammock": {
      "path": "peak/rep${i+1}/pseudorep1/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudoreplicate 1/Blacklist-filtered narrowpeak (hammock)"
    },
    "frip_qc": {
      "path": "qc/rep${i+1}/pseudorep1/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Pseudoreplicate 1/Fraction of peaks in reads"
    }
  },
  "chip.call_peak_pr2": {
    "peak": {
      "path": "peak/rep${i+1}/pseudorep2/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudoreplicate 2/Raw narrowpeak"
    },
    "bfilt_peak": {
      "path": "peak/rep${i+1}/pseudorep2/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudoreplicate 2/Blacklist-filtered narrowpeak"
    },
    "bfilt_peak_bb": {
      "path": "peak/rep${i+1}/pseudorep2/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudoreplicate 2/Blacklist-filtered narrowpeak (BigBed)"
    },
    "bfilt_peak_hammock": {
      "path": "peak/rep${i+1}/pseudorep2/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudoreplicate 2/Blacklist-filtered narrowpeak (hammock)"
    },
    "frip_qc": {
      "path": "qc/rep${i+1}/pseudorep2/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Pseudoreplicate 2/Fraction of peaks in reads"
    }
  },
  "chip.call_peak_pooled": {
    "peak": {
      "path": "peak/pooled-rep/${basename}",
      "table": "Peak/Pooled replicate/Raw narrowpeak",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Peak\"]",
      "subgraph": "cluster_pooled_rep"
    },
    "bfilt_peak": {
      "path": "peak/pooled-rep/${basename}",
      "table": "Peak/Pooled replicate/Blacklist-filtered narrowpeak",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Peak\\n(bfilt)\"]",
      "subgraph": "cluster_pooled_rep"
    },
    "bfilt_peak_bb": {
      "path": "peak/pooled-rep/${basename}",
      "table": "Peak/Pooled replicate/Blacklist-filtered narrowpeak (BigBed)"
    },
    "bfilt_peak_hammock": {
      "path": "peak/pooled-rep/${basename}",
      "table": "Peak/Pooled replicate/Blacklist-filtered narrowpeak (hammock)"
    },
    "frip_qc": {
      "path": "qc/pooled-rep/${basename}",
      "table": "QC and logs/Pooled replicate/Fraction of peaks in reads"
    }
  },
  "chip.call_peak_ppr1": {
    "peak": {
      "path": "peak/pooled-rep/pseudorep1/${basename}",
      "table": "Peak/Pooled replicate/Pseudoreplicate 1/Raw narrowpeak"
    },
    "bfilt_peak": {
      "path": "peak/pooled-rep/pseudorep1/${basename}",
      "table": "Peak/Pooled replicate/Pseudoreplicate 1/Blacklist-filtered narrowpeak"
    },
    "bfilt_peak_bb": {
      "path": "peak/pooled-rep/pseudorep1/${basename}",
      "table": "Peak/Pooled replicate/Pseudoreplicate 1/Blacklist-filtered narrowpeak (BigBed)"
    },
    "bfilt_peak_hammock": {
      "path": "peak/pooled-rep/pseudorep1/${basename}",
      "table": "Peak/Pooled replicate/Pseudoreplicate 1/Blacklist-filtered narrowpeak (hammock)"
    },
    "frip_qc": {
      "path": "qc/pooled-rep/pseudorep1/${basename}",
      "table": "QC and logs/Pooled replicate/Pseudoreplicate 1/Fraction of peaks in reads"
    }
  },
  "chip.call_peak_ppr2": {
    "peak": {
      "path": "peak/pooled-rep/pseudorep2/${basename}",
      "table": "Peak/Pooled replicate/Pseudoreplicate 2/Raw narrowpeak"
    },
    "bfilt_peak": {
      "path": "peak/pooled-rep/pseudorep2/${basename}",
      "table": "Peak/Pooled replicate/Pseudoreplicate 2/Blacklist-filtered narrowpeak"
    },
    "bfilt_peak_bb": {
      "path": "peak/pooled-rep/pseudorep2/${basename}",
      "table": "Peak/Pooled replicate/Pseudoreplicate 2/Blacklist-filtered narrowpeak (BigBed)"
    },
    "bfilt_peak_hammock": {
      "path": "peak/pooled-rep/pseudorep2/${basename}",
      "table": "Peak/Pooled replicate/Pseudoreplicate 2/Blacklist-filtered narrowpeak (hammock)"
    },
    "frip_qc": {
      "path": "qc/pooled-rep/pseudorep2/${basename}",
      "table": "QC and logs/Pooled replicate/Pseudoreplicate 2/Fraction of peaks in reads"
    }
  },
  "chip.macs2_signal_track": {
    "pval_bw": {
      "path": "signal/rep${i+1}/${basename}",
      "table": "Signal/Replicate ${i+1}/MACS2 signal track (p-val)",
      "ucsc_track": "track type=bigWig name=\"MACS2 p-val (rep${i+1})\" priority=${i+1} smoothingWindow=off maxHeightPixels=80:60:40 color=255,0,0 autoScale=off viewLimits=0:40 visibility=full",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"BW\\np-val\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "fc_bw": {
      "path": "signal/rep${i+1}/${basename}",
      "table": "Signal/Replicate ${i+1}/MACS2 signal track (fold-enrichment)",
      "ucsc_track": "track type=bigWig name=\"MACS2 fc (rep${i+1})\" priority=${i+1} smoothingWindow=off maxHeightPixels=80:60:40 color=255,0,0 autoScale=off viewLimits=0:40 visibility=full",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"BW\\nFC\"]",
      "subgraph": "cluster_rep${i+1}"
    }
  },
  "chip.macs2_signal_track_pooled": {
    "pval_bw": {
      "path": "signal/pooled-rep/${basename}",
      "table": "Signal/Pooled replicate/MACS2 signal track (p-val)",
      "ucsc_track": "track type=bigWig name=\"MACS2 p-val (pooled)\" priority=0 smoothingWindow=off maxHeightPixels=80:60:40 color=255,0,0 autoScale=off viewLimits=0:40 visibility=full",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"BW\\np-val\"]",
      "subgraph": "cluster_pooled_rep"
    },
    "fc_bw": {
      "path": "signal/pooled-rep/${basename}",
      "table": "Signal/Pooled replicate/MACS2 signal track (fold-enrichment)",
      "ucsc_track": "track type=bigWig name=\"MACS2 fc (pooled)\" priority=0 smoothingWindow=off maxHeightPixels=80:60:40 color=255,0,0 autoScale=off viewLimits=0:40 visibility=full",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"BW\\nFC\"]",
      "subgraph": "cluster_pooled_rep"
    }
  },
  "chip.count_signal_track": {
    "pos_bw": {
      "path": "signal/rep${i+1}/${basename}",
      "table": "Signal/Replicate ${i+1}/Count signal track (positive)",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Count +\\nSignal\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "neg_bw": {
      "path": "signal/rep${i+1}/${basename}",
      "table": "Signal/Replicate ${i+1}/Count signal track (negative)",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Count -\\nSignal\"]",
      "subgraph": "cluster_rep${i+1}"
    }
  },
  "chip.count_signal_track_pooled": {
    "pos_bw": {
      "path": "signal/pooled-rep/${basename}",
      "table": "Signal/Pooled replicate/Count signal track (positive)",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Count +\\nSignal\"]",
      "subgraph": "cluster_pooled_rep"
    },
    "neg_bw": {
      "path": "signal/pooled-rep/${basename}",
      "table": "Signal/Pooled replicate/Count signal track (negative)",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Count -\\nSignal\"]",
      "subgraph": "cluster_pooled_rep"
    }
  },
  "chip.idr": {
    "bfilt_idr_peak": {
      "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}",
      "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered IDR peak",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"IDR NPeak\\n${basename.split('.')[0]}\"]"
    },
    "bfilt_idr_peak_bb": {
      "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}",
      "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered IDR peak (BigBed)"
    },
    "bfilt_idr_peak_hammock": {
      "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}",
      "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered IDR peak (hammock)"
    },
    "idr_unthresholded_peak": {
      "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}",
      "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Unthresholded raw IDR peak"
    },
    "idr_plot": {
      "path": "qc/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}",
      "table": "QC and logs/${basename.split('.')[0].replace('_',' vs. ').replace('-',' vs. ').capitalize()}/IDR plot",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"IDR Plot\\n${basename.split('.')[0]}\"]"
    },
    "idr_log": {
      "path": "qc/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}",
      "table": "QC and logs/${basename.split('.')[0].replace('_',' vs. ').replace('-',' vs. ').capitalize()}/IDR log"
    },
    "frip_qc": {
      "path": "qc/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}",
      "table": "QC and logs/${basename.split('.')[0].replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Fraction of IDR peaks in reads"
    }
  },
  "chip.idr_ppr": {
    "bfilt_idr_peak": {
      "path": "peak/pooled-pseudorep1_vs_2/${basename}",
      "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered IDR peak",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"IDR Peak\\nppr\"]"
    },
    "bfilt_idr_peak_bb": {
      "path": "peak/pooled-pseudorep1_vs_2/${basename}",
      "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered IDR peak (BigBed)"
    },
    "bfilt_idr_peak_hammock": {
      "path": "peak/pooled-pseudorep1_vs_2/${basename}",
      "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered IDR peak (hammock)"
    },
    "idr_unthresholded_peak": {
      "path": "peak/pooled-pseudorep1_vs_2/${basename}",
      "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Unthresholded raw IDR peak"
    },
    "idr_plot": {
      "path": "qc/pooled-pseudorep1_vs_2/${basename}",
      "table": "QC and logs/Pooled pseudoreplicate 1 vs. 2/IDR plot",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"IDR Plot\\nppr\"]"
    },
    "idr_log": {
      "path": "qc/pooled-pseudorep1_vs_2/${basename}",
      "table": "QC and logs/Pooled pseudoreplicate 1 vs. 2/IDR log"
    },
    "frip_qc": {
      "path": "qc/pooled-pseudorep1_vs_2/${basename}",
      "table": "QC and logs/Pooled pseudoreplicate 1 vs. 2/Fraction of IDR peaks in reads"
    }
  },
  "chip.idr_pr": {
    "bfilt_idr_peak": {
      "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered IDR peak"
    },
    "bfilt_idr_peak_bb": {
      "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered IDR peak (BigBed)"
    },
    "bfilt_idr_peak_hammock": {
      "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered IDR peak (hammock)"
    },
    "idr_unthresholded_peak": {
      "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Unthresholded raw IDR peak"
    },
    "idr_plot": {
      "path": "qc/rep${i+1}-pseudorep1_vs_2/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/IDR plot"
    },
    "idr_log": {
      "path": "qc/rep${i+1}-pseudorep1_vs_2/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/IDR log"
    },
    "frip_qc": {
      "path": "qc/rep${i+1}-pseudorep1_vs_2/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Fraction of IDR peaks in reads"
    }
  },
  "chip.overlap": {
    "bfilt_overlap_peak": {
      "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}",
      "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered overlap peak",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Overlap Peak\\n${basename.split('.')[0]}\"]"      
    },
    "bfilt_overlap_peak_bb": {
      "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}",
      "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered overlap peak (BigBed)"
    },
    "bfilt_overlap_peak_hammock": {
      "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}",
      "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered overlap peak (hammock)"
    },
    "frip_qc": {
      "path": "qc/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}",
      "table": "QC and logs/${basename.split('.')[0].replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Fraction of overlap peaks in reads"
    }
  },
  "chip.overlap_ppr": {
    "bfilt_overlap_peak": {
      "path": "peak/pooled-pseudorep1_vs_2/${basename}",
      "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered overlap peak",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Overlap Peak\\nppr\"]"
    },
    "bfilt_overlap_peak_bb": {
      "path": "peak/pooled-pseudorep1_vs_2/${basename}",
      "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered overlap peak (BigBed)"
    },
    "bfilt_overlap_peak_hammock": {
      "path": "peak/pooled-pseudorep1_vs_2/${basename}",
      "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered overlap peak (hammock)"
    },
    "frip_qc": {
      "path": "qc/pooled-pseudorep1_vs_2/${basename}",
      "table": "QC and logs/Pooled pseudoreplicate 1 vs. 2/Fraction of overlap peaks in reads"
    }
  },
  "chip.overlap_pr": {
    "bfilt_overlap_peak": {
      "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered overlap peak"
    },
    "bfilt_overlap_peak_bb": {
      "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered overlap peak (BigBed)"
    },
    "bfilt_overlap_peak_hammock": {
      "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}",
      "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered overlap peak (hammock)"
    },
    "frip_qc": {
      "path": "qc/rep${i+1}-pseudorep1_vs_2/${basename}",
      "table": "QC and logs/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Fraction of overlap peaks in reads"
    }
  },
  "chip.reproducibility_idr": {
    "optimal_peak": {
      "path": "peak/idr_reproducibility/${basename}",
      "table": "Peak/IDR reproducibility/Optimal peak",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"IDR Peak\\noptimal\"]"
    },
    "optimal_peak_bb": {
      "path": "peak/idr_reproducibility/${basename}",
      "table": "Peak/IDR reproducibility/Optimal peak (BigBed)",
      "ucsc_track": "track type=bigBed name=\"Optimal IDR peak\" priority=100 color=0,0,255 visibility=full"
    },
    "optimal_peak_hammock": {
      "path": "peak/idr_reproducibility/${basename}",
      "table": "Peak/IDR reproducibility/Optimal peak (hammock)"
    },
    "conservative_peak": {
      "path": "peak/idr_reproducibility/${basename}",
      "table": "Peak/IDR reproducibility/Conservative peak"
    },
    "conservative_peak_bb": {
      "path": "peak/idr_reproducibility/${basename}",
      "table": "Peak/IDR reproducibility/Conservative peak (BigBed)",
      "ucsc_track": "track type=bigBed name=\"Conservative IDR peak\" priority=100 color=0,0,255 visibility=full"
    },
    "conservative_peak_hammock": {
      "path": "peak/idr_reproducibility/${basename}",
      "table": "Peak/IDR reproducibility/Conservative peak (hammock)"
    },
    "reproducibility_qc": {
      "path": "qc/${basename}",
      "table": "QC and logs/Reproducibility QC for overlap peaks",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"IDR\\nreproducibility\"]"
    }
  },
  "chip.reproducibility_overlap": {
    "optimal_peak": {
      "path": "peak/overlap_reproducibility/${basename}",
      "table": "Peak/Overlap reproducibility/Optimal peak",
      "node": "[shape=box style=\"filled, rounded\" fillcolor=lightyellow label=\"Overlap Peak\\noptimal\"]"
    },
    "optimal_peak_bb": {
      "path": "peak/overlap_reproducibility/${basename}",
      "table": "Peak/Overlap reproducibility/Optimal peak (BigBed)",
      "ucsc_track": "track type=bigBed name=\"Optimal overlap peak\" priority=100 color=0,0,255 visibility=full"
    },
    "optimal_peak_hammock": {
      "path": "peak/overlap_reproducibility/${basename}",
      "table": "Peak/Overlap reproducibility/Optimal peak (hammock)"
    },
    "conservative_peak": {
      "path": "peak/overlap_reproducibility/${basename}",
      "table": "Peak/Overlap reproducibility/Conservative peak"
    },
    "conservative_peak_bb": {
      "path": "peak/overlap_reproducibility/${basename}",
      "table": "Peak/Overlap reproducibility/Conservative peak (BigBed)",
      "ucsc_track": "track type=bigBed name=\"Conservative overlap peak\" priority=100 color=0,0,255 visibility=full"
    },
    "conservative_peak_hammock": {
      "path": "peak/overlap_reproducibility/${basename}",
      "table": "Peak/Overlap reproducibility/Conservative peak (hammock)"
    },
    "reproducibility_qc": {
      "path": "qc/${basename}",
      "table": "QC and logs/Reproducibility QC for IDR peaks",
      "node": "[shape=oval style=\"filled\" fillcolor=gainsboro fontsize=6 margin=0 label=\"Overlap\\nreproducibility\"]"
    }
  },
  "chip.qc_report": {
    "report": {
      "path": "qc/${basename}",
      "table": "QC and logs/Final HTML report"
    },
    "qc_json": {
      "path": "qc/${basename}",
      "table": "QC and logs/Final QC JSON file"
    }
  },
  "inputs": {
    "chip.fastqs_rep1_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_rep1"
    },
    "chip.fastqs_rep1_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_rep1"
    },
    "chip.fastqs_rep2_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_rep2"
    },
    "chip.fastqs_rep2_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_rep2"
    },
    "chip.fastqs_rep3_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_rep3"
    },
    "chip.fastqs_rep3_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_rep3"
    },
    "chip.fastqs_rep4_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_rep4"
    },
    "chip.fastqs_rep4_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_rep4"
    },
    "chip.fastqs_rep5_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_rep5"
    },
    "chip.fastqs_rep5_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_rep5"
    },
    "chip.fastqs_rep6_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_rep6"
    },
    "chip.fastqs_rep6_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_rep6"
    },
    "chip.fastqs_rep7_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_rep7"
    },
    "chip.fastqs_rep7_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_rep7"
    },
    "chip.fastqs_rep8_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_rep8"
    },
    "chip.fastqs_rep8_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_rep8"
    },
    "chip.fastqs_rep9_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_rep9"
    },
    "chip.fastqs_rep9_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_rep9"
    },
    "chip.fastqs_rep10_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_rep10"
    },
    "chip.fastqs_rep10_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_rep10"
    },
    "chip.ctl_fastqs_rep1_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_ctl1"
    },
    "chip.ctl_fastqs_rep1_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_ctl1"
    },
    "chip.ctl_fastqs_rep2_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_ctl2"
    },
    "chip.ctl_fastqs_rep2_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_ctl2"
    },
    "chip.ctl_fastqs_rep3_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_ctl3"
    },
    "chip.ctl_fastqs_rep3_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_ctl3"
    },
    "chip.ctl_fastqs_rep4_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_ctl4"
    },
    "chip.ctl_fastqs_rep4_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_ctl4"
    },
    "chip.ctl_fastqs_rep5_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_ctl5"
    },
    "chip.ctl_fastqs_rep5_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_ctl5"
    },
    "chip.ctl_fastqs_rep6_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_ctl6"
    },
    "chip.ctl_fastqs_rep6_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_ctl6"
    },
    "chip.ctl_fastqs_rep7_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_ctl7"
    },
    "chip.ctl_fastqs_rep7_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_ctl7"
    },
    "chip.ctl_fastqs_rep8_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_ctl8"
    },
    "chip.ctl_fastqs_rep8_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_ctl8"
    },
    "chip.ctl_fastqs_rep9_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_ctl9"
    },
    "chip.ctl_fastqs_rep9_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_ctl9"
    },
    "chip.ctl_fastqs_rep10_R1": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR1 (${i+1})\"]",
      "subgraph": "cluster_ctl10"
    },
    "chip.ctl_fastqs_rep10_R2": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"FASTQ\\nR2 (${i+1})\"]",
      "subgraph": "cluster_ctl10"
    },
    "chip.bams": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"BAM\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "chip.nodup_bams": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"Filt/deduped\\nBAM\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "chip.tas": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"TAG-ALIGN\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "chip.ctl_bams": { 
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"BAM\"]",
      "subgraph": "cluster_ctl${i+1}"
    },
    "chip.ctl_nodup_bams": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"Filt/deduped\\nBAM\"]",
      "subgraph": "cluster_ctl${i+1}"
    },
    "chip.ctl_tas": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"TAG-ALIGN\"]",
      "subgraph": "cluster_ctl${i+1}"
    },
    "chip.peaks": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"Peak\"]",
      "subgraph": "cluster_rep${i+1}"
    },
    "chip.peak_pooled": {
      "node": "[shape=box style=\"filled, rounded\" fillcolor=pink label=\"Peak\"]",
      "subgraph": "cluster_pooled_rep"
    }
  },
  "task_graph_template": {
    "graph [rankdir=LR nodesep=0.1 ranksep=0.3]": null,
    "node [shape=box fontsize=9 margin=0.05 penwidth=0.5 height=0 fillcolor=lightcyan color=darkgrey style=filled]": null,
    "edge [arrowsize=0.5 color=darkgrey penwidth=0.5]": null,
    "subgraph cluster_pooled_rep":{"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "oldlace", "labeljust": "\"l\"", "label": "\"Pooled replicate\""},
    "subgraph cluster_rep1":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Replicate 1\""},
    "subgraph cluster_rep2":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Replicate 2\""},
    "subgraph cluster_rep3":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Replicate 3\""},
    "subgraph cluster_rep4":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Replicate 4\""},
    "subgraph cluster_rep5":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Replicate 5\""},
    "subgraph cluster_rep6":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Replicate 6\""},
    "subgraph cluster_rep7":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Replicate 7\""},
    "subgraph cluster_rep8":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Replicate 8\""},
    "subgraph cluster_rep9":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Replicate 9\""},
    "subgraph cluster_rep10": {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Replicate 10\""},
    "subgraph cluster_pooled_ctl":{"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "oldlace", "labeljust": "\"l\"", "label": "\"Pooled control\""},
    "subgraph cluster_ctl1":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Control 1\""},
    "subgraph cluster_ctl2":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Control 2\""},
    "subgraph cluster_ctl3":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Control 3\""},
    "subgraph cluster_ctl4":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Control 4\""},
    "subgraph cluster_ctl5":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Control 5\""},
    "subgraph cluster_ctl6":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Control 6\""},
    "subgraph cluster_ctl7":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Control 7\""},
    "subgraph cluster_ctl8":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Control 8\""},
    "subgraph cluster_ctl9":  {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Control 9\""},
    "subgraph cluster_ctl10": {"style": "\"filled, dashed\"", "fontsize": "9", "color": "darkgrey", "penwidth": "0.5", "fillcolor": "honeydew", "labeljust": "\"l\"", "label": "\"Control 10\""}
  }
}
