DNAcopy
Dependencies & Environment
Package-intrinsic requirements from the Bioconductor landing page — reproduce in any R environment.
- Version: 1.86.0 · Bioconductor: 3.23 · R: ≥ 4.6
- Depends: Imports
- System requirements: URL
- Install:
BiocManager::install("DNAcopy")
When to Use
- Copy Number Segmentation: Finding change-points in array DNA copy number data (e.g., array CGH) using the
segment() function.
- Identifying Gains and Losses: Determining regions of gained and lost copy number by plotting segment means with
plot().
- Outlier Smoothing: Smoothing single point outliers in log-ratio data prior to segmentation using
smooth.CNA().
When NOT to Use
- For allele-specific copy number estimation or tumor purity/ploidy correction, use
PureCN because DNAcopy only segments total copy number.
- For single-cell DNA copy number profiling where specialized noise models are required, use
AneuFinder because DNAcopy assumes bulk-level signal distributions.
- For multi-sample joint segmentation, use
copynumber because DNAcopy processes samples independently.
Data Requirements
- Input Object: Data must be converted into a
CNA object using the CNA() function.
- Required Columns: A matrix or vector of log-ratio data, a vector of
Chromosome identifiers, and a vector of Position (map locations).
- Data Type: Typically specified as
data.type="logratio".
Key Parameters
- undo.splits (
"sdundo"): Method to get rid of unnecessary change-points due to local trends.
- undo.SD (
3): The number of standard deviations used when undo.splits="sdundo" to remove splits.
- plot.type (
"w", "s", "c", "p"): Determines the layout of the plot() function (e.g., whole genome, by chromosome, across studies, or ordered by plateau).
- p.method (
"perm"): Method for p-value computation. The default is a faster hybrid approach, but full permutations can be forced.
- nperm (
10000): Number of permutations used in the hybrid method.
- alpha: Significance level for the test to accept change-points.
- verbose (
1): Controls the printing of progress during the segment() run.
Best Practices
- Smooth Data First: Always run
smooth.CNA() on your CNA object to mitigate the effect of single point outliers before running segment().
- Undo Local Trends: Use
undo.splits="sdundo" with undo.SD=3 in segment() to remove false-positive change-points caused by local data trends.
- Subset Large Data: Use
subset.CNA() to subset by chromosome and sample so that segmentation does not have to be run on a whole data set at once.
- Determine Thresholds: Use
plot() with plot.type="p" to order segments by their chromosome means, helping to visually determine the plateaus for calling gains (e.g., 0.4) and losses (e.g., -0.6).
Common Pitfalls
- Over-segmentation from Local Trends: The algorithm may find change-points due to local trends rather than true copy number shifts. Fix: Apply the
undo.splits="sdundo" parameter in segment().
- Slow Computation on Large Datasets: Running the full permutation algorithm takes O(N^2) computations. Fix: Rely on the default hybrid approach (Gaussian approximation + permutation) rather than setting
p.method='perm', or reduce nperm.
- Plotting Clutter: Plotting multiple chromosomes at once can be hard to read. Fix: Use
plot.type="s" to plot by chromosome within a study.
Alternatives
- copynumber: For multi-sample segmentation and joint segmentation of copy number data.
- PureCN: For joint estimation of tumor purity, ploidy, and absolute copy number.
- AneuFinder: For copy number analysis of single-cell sequencing data.
Citations
- Olshen, A. B., Venkatraman, E. S., Lucito, R., and Wigler, M. (2004). Circular binary segmentation for the analysis of array-based dna copy number data. Biostatistics, 5:557–72.
- Venkatraman, E. S. and Olshen, A. B. (2007). A faster circular binary segmentation algorithm for the analysis of array cgh data. Bioinformatics, 23:657–63.
References
Run this on BioMate
This skill is the knowledge layer — when, why, and how to use dnacopy. To run this analysis on your own data with managed compute, automated QC, and reproducible outputs, use BioMate — free to start.
▶ Open dnacopy on BioMate →
1---2name: bioconductor-dnacopy3description: Implements the circular binary segmentation (CBS) algorithm to segment DNA copy number data and identify genomic regions with abnormal copy number.4---56# DNAcopy78## Dependencies & Environment910> Package-intrinsic requirements from the Bioconductor landing page — reproduce in any R environment.1112- **Version:** 1.86.0 · **Bioconductor:** 3.23 · **R:** ≥ 4.613- **Depends:** Imports14- **System requirements:** URL15- **Install:** `BiocManager::install("DNAcopy")`1617## When to Use18- **Copy Number Segmentation**: Finding change-points in array DNA copy number data (e.g., array CGH) using the `segment()` function.19- **Identifying Gains and Losses**: Determining regions of gained and lost copy number by plotting segment means with `plot()`.20- **Outlier Smoothing**: Smoothing single point outliers in log-ratio data prior to segmentation using `smooth.CNA()`.2122## When NOT to Use23- For allele-specific copy number estimation or tumor purity/ploidy correction, use `PureCN` because `DNAcopy` only segments total copy number.24- For single-cell DNA copy number profiling where specialized noise models are required, use `AneuFinder` because `DNAcopy` assumes bulk-level signal distributions.25- For multi-sample joint segmentation, use `copynumber` because `DNAcopy` processes samples independently.2627## Data Requirements28- **Input Object**: Data must be converted into a `CNA` object using the `CNA()` function.29- **Required Columns**: A matrix or vector of log-ratio data, a vector of `Chromosome` identifiers, and a vector of `Position` (map locations).30- **Data Type**: Typically specified as `data.type="logratio"`.3132## Key Parameters33- **undo.splits** (`"sdundo"`): Method to get rid of unnecessary change-points due to local trends.34- **undo.SD** (`3`): The number of standard deviations used when `undo.splits="sdundo"` to remove splits.35- **plot.type** (`"w"`, `"s"`, `"c"`, `"p"`): Determines the layout of the `plot()` function (e.g., whole genome, by chromosome, across studies, or ordered by plateau).36- **p.method** (`"perm"`): Method for p-value computation. The default is a faster hybrid approach, but full permutations can be forced.37- **nperm** (`10000`): Number of permutations used in the hybrid method.38- **alpha**: Significance level for the test to accept change-points.39- **verbose** (`1`): Controls the printing of progress during the `segment()` run.4041## Best Practices42- **Smooth Data First**: Always run `smooth.CNA()` on your `CNA` object to mitigate the effect of single point outliers before running `segment()`.43- **Undo Local Trends**: Use `undo.splits="sdundo"` with `undo.SD=3` in `segment()` to remove false-positive change-points caused by local data trends.44- **Subset Large Data**: Use `subset.CNA()` to subset by chromosome and sample so that segmentation does not have to be run on a whole data set at once.45- **Determine Thresholds**: Use `plot()` with `plot.type="p"` to order segments by their chromosome means, helping to visually determine the plateaus for calling gains (e.g., 0.4) and losses (e.g., -0.6).4647## Common Pitfalls48- **Over-segmentation from Local Trends**: The algorithm may find change-points due to local trends rather than true copy number shifts. *Fix*: Apply the `undo.splits="sdundo"` parameter in `segment()`.49- **Slow Computation on Large Datasets**: Running the full permutation algorithm takes O(N^2) computations. *Fix*: Rely on the default hybrid approach (Gaussian approximation + permutation) rather than setting `p.method='perm'`, or reduce `nperm`.50- **Plotting Clutter**: Plotting multiple chromosomes at once can be hard to read. *Fix*: Use `plot.type="s"` to plot by chromosome within a study.5152## Alternatives53- **copynumber**: For multi-sample segmentation and joint segmentation of copy number data.54- **PureCN**: For joint estimation of tumor purity, ploidy, and absolute copy number.55- **AneuFinder**: For copy number analysis of single-cell sequencing data.5657## Citations58- Olshen, A. B., Venkatraman, E. S., Lucito, R., and Wigler, M. (2004). Circular binary segmentation for the analysis of array-based dna copy number data. *Biostatistics*, 5:557–72.59- Venkatraman, E. S. and Olshen, A. B. (2007). A faster circular binary segmentation algorithm for the analysis of array cgh data. *Bioinformatics*, 23:657–63.6061## References62- Homepage: https://bioconductor.org/packages/DNAcopy63- Vignette: https://bioconductor.org/packages/release/bioc/vignettes/DNAcopy/inst/doc/DNAcopy.pdf6465<!-- biomate-cta -->66---6768## Run this on BioMate6970This skill is the **knowledge layer** — when, why, and how to use `dnacopy`. To **run this analysis on your own data** with managed compute, automated QC, and reproducible outputs, use **[BioMate](https://www.biomate.ai?ref=kb&pkg=dnacopy)** — free to start.7172▶ **[Open `dnacopy` on BioMate →](https://www.biomate.ai?ref=kb&pkg=dnacopy)**