Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
## ASPEN development version

## ASPEN 1.2.0

- Add `hs1_chrR` as a supported reference genome (T2T-CHM13 + chrR rDNA unit from [Paralkar lab](https://github.com/vikramparalkar/rDNA-Mapping-Genomes)). (#117, @kopardev)
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.2.0
1.2.0-dev
8 changes: 4 additions & 4 deletions docs/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ ASPEN requires a sample manifest file (`samples.tsv`) to identify and organize y
- `path_to_R2_fastq`: Absolute path to the Read 2 FASTQ file (required for paired-end data).

!!! note
Symlinks for R1 and R2 files will be created in the results directory, named as `<replicateName>.R1.fastq.gz` and `<replicateName>.R2.fastq.gz`, respectively. Therefore, original filenames do not need to be altered.
Symlinks for R1 and R2 files will be created in the results directory, named as `<replicateName>.R1.fastq.gz` and `<replicateName>.R2.fastq.gz`, respectively. Therefore, original filenames do not need to be altered.

!!! note
The `replicateName` is used as a prefix for individual peak calls, while the `sampleName` serves as a prefix for consensus peak calls.
The `replicateName` is used as a prefix for individual peak calls, while the `sampleName` serves as a prefix for consensus peak calls.

!!! warning "Biological vs. technical replicates"
ASPEN expects **one row per biological replicate**. If you sequenced the same sample across multiple lanes or sequencing runs (technical replicates), you must **concatenate those FASTQ files into a single file** before creating your manifest — ASPEN does not merge lanes internally.
ASPEN expects **one row per biological replicate**. If you sequenced the same sample across multiple lanes or sequencing runs (technical replicates), you must **concatenate those FASTQ files into a single file** before creating your manifest — ASPEN does not merge lanes internally.

| Replicate type | Definition | What to do |
|---|---|---|
Expand All @@ -53,7 +53,7 @@ ASPEN requires a sample manifest file (`samples.tsv`) to identify and organize y
DESeq2 (used in `diffatac`) requires **at least 2 biological replicates per group**. Technical replicates do not count as biological replicates and will not satisfy this requirement.

!!! note
For differential ATAC analysis, create a `contrasts.tsv` file with two columns (Group1 and Group2 ... aka Sample1 and Sample2, without headers) and place it in the output directory after initialization. Ensure each group/sample in the contrast has at least two biological replicates, as DESeq2 requires this for accurate contrast calculations.
For differential ATAC analysis, create a `contrasts.tsv` file with two columns (Group1 and Group2 ... aka Sample1 and Sample2, without headers) and place it in the output directory after initialization. Ensure each group/sample in the contrast has at least two biological replicates, as DESeq2 requires this for accurate contrast calculations.

## 🏃 Running the ASPEN Pipeline

Expand Down
16 changes: 8 additions & 8 deletions docs/limitations.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@

- **Genomes supported**: Genomes supported is limited to:

| Genome Assembly | Organism | Scientific Name |
| --------------- | --------------- | ---------------- |
| hg38 | Human | _Homo sapiens_ |
| hg19 | Human | _Homo sapiens_ |
| mm10 | Mouse | _Mus musculus_ |
| mmul10 | Rhesus Monkey | _Macaca mulatta_ |
| bosTau9 | Domestic Cattle | _Bos taurus_ |
| hs1 | Human | _Homo sapiens_ (T2T-CHM13) |
| Genome Assembly | Organism | Scientific Name |
| --------------- | --------------- | ----------------------------------------------------------- |
| hg38 | Human | _Homo sapiens_ |
| hg19 | Human | _Homo sapiens_ |
| mm10 | Mouse | _Mus musculus_ |
| mmul10 | Rhesus Monkey | _Macaca mulatta_ |
| bosTau9 | Domestic Cattle | _Bos taurus_ |
| hs1 | Human | _Homo sapiens_ (T2T-CHM13) |
| hs1_chrR | Human | _Homo sapiens_ (T2T-CHM13 + chrR rDNA unit; see note below) |

!!! tip "Use `hs1_chrR` for ribosomal DNA chromatin accessibility studies"
Expand Down
15 changes: 8 additions & 7 deletions docs/outputs.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ important for interpreting output files and configuring the pipeline correctly.

**Round 1 — Per-sample consensus** (`*.macs2.consensus.bed` / `*.genrich.consensus.bed`)

> *"Which peaks are reproducible across biological replicates of the same sample?"*
> _"Which peaks are reproducible across biological replicates of the same sample?"_

1. All replicate tagAlign files for a sample are **pooled** and passed to MACS2/Genrich together → produces a large set of candidate peaks from the pooled data.
2. Each candidate peak is checked for overlap with peaks called in each **individual replicate**.
Expand All @@ -152,7 +152,7 @@ replicate 3 peaks ─┘ (≥ min_replicates)

**Round 2 — ROI consensus** (`ROI.macs2.bed` / `ROI.genrich.bed`)

> *"Across ALL samples, what is the unified set of fixed-width windows for differential accessibility analysis?"*
> _"Across ALL samples, what is the unified set of fixed-width windows for differential accessibility analysis?"_

1. Per-sample consensus peaks are converted to **fixed-width windows** (default: 500 bp, centered on the peak summit) using the method from [Corces et al. 2018](https://doi.org/10.1038/nmeth.4396). Window width is controlled by `fixed_width` in `config.yaml`.
2. Fixed-width peaks from all samples are **merged** → `ROI.macs2.bed` — the master set of regions used for DESeq2 read counting and differential accessibility analysis.
Expand All @@ -165,11 +165,12 @@ sample3.consensus.bed ─► fixed-width peaks ─┘
```

!!! tip "Config knobs that control consensus"
| Parameter | Default | Effect |
|---|---|---|
| `consensus_min_replicates` | `1` | Min. replicates a peak must appear in to be retained in per-sample consensus |
| `consensus_min_spm` | `5` | Min. signal-per-million reads threshold for a peak to be included |
| `fixed_width` | `500` | Width (bp) of fixed-width peaks used to build the ROI set |

| Parameter | Default | Effect |
| -------------------------- | ------- | ---------------------------------------------------------------------------- |
| `consensus_min_replicates` | `1` | Min. replicates a peak must appear in to be retained in per-sample consensus |
| `consensus_min_spm` | `5` | Min. signal-per-million reads threshold for a peak to be included |
| `fixed_width` | `500` | Width (bp) of fixed-width peaks used to build the ROI set |

#### Peak Annotation folder

Expand Down
4 changes: 3 additions & 1 deletion workflow/scripts/ccbr_annotate_bed.R
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,9 @@ if (args$genome == "bosTau9") {
tdb <- TxDb.Btaurus.UCSC.bosTau9.refGene
}
if (args$genome %in% c("hs1", "hs1_chrR")) {
tdb <- AnnotationDbi::loadDb("/opt2/annotation/TxDb.Hsapiens.NCBI.T2T.CHM13v2.0.sqlite")
tdb <- AnnotationDbi::loadDb(
"/opt2/annotation/TxDb.Hsapiens.NCBI.T2T.CHM13v2.0.sqlite"
)
}


Expand Down
4 changes: 3 additions & 1 deletion workflow/scripts/ccbr_annotate_peaks.R
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,9 @@ if (args$genome == "bosTau9") {
tdb <- TxDb.Btaurus.UCSC.bosTau9.refGene
}
if (args$genome %in% c("hs1", "hs1_chrR")) {
tdb <- AnnotationDbi::loadDb("/opt2/annotation/TxDb.Hsapiens.NCBI.T2T.CHM13v2.0.sqlite")
tdb <- AnnotationDbi::loadDb(
"/opt2/annotation/TxDb.Hsapiens.NCBI.T2T.CHM13v2.0.sqlite"
)
}


Expand Down
4 changes: 1 addition & 3 deletions workflow/scripts/ccbr_atac_bam2tn5bed.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,4 @@ def extract_fragments(input_bam, output_tn5, output_reads, threads, chrom_sizes)
)
args = parser.parse_args()
genome_sizes = parse_genome_sizes(args.genomefile)
extract_fragments(
args.bam, args.tn5bed, args.readsbed, args.ncpus, genome_sizes
)
extract_fragments(args.bam, args.tn5bed, args.readsbed, args.ncpus, genome_sizes)
2 changes: 1 addition & 1 deletion workflow/scripts/ccbr_bam_filter_by_mapq.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@
continue
pairedreads.write(read)
samfile.close()
pairedreads.close()
pairedreads.close()
Loading