Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ title: dupRadar Benchmark
description: Performance comparison between RustQC and R dupRadar, with zero output mismatches across all values.
---

export const base = import.meta.env.BASE_URL;

RustQC produces output **identical** to the R dupRadar package. Every value in the duplication matrix, every count, and the fitted model parameters match exactly. The benchmarks below quantify the performance difference on real RNA-seq data.

## Small benchmark
Expand Down Expand Up @@ -69,39 +71,39 @@ The plots below compare the R dupRadar output (left) with RustQC output (right)

#### Density scatter plot

<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 1rem 0;">
<figure style="margin: 0; text-align: center;">
<img src="/benchmarks/large/dupRadar/duprateExpDens.png" alt="dupRadar (R) density scatter plot" style="width: 100%;" />
<div style={{display: "grid", gridTemplateColumns: "1fr 1fr", gap: "1rem", margin: "1rem 0"}}>
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/dupRadar/duprateExpDens.png`} alt="dupRadar (R) density scatter plot" style={{width: "100%"}} />
<figcaption>dupRadar (R)</figcaption>
</figure>
<figure style="margin: 0; text-align: center;">
<img src="/benchmarks/large/RustQC/GM12878_REP1.markdup.sorted_duprateExpDens.png" alt="RustQC density scatter plot" style="width: 100%;" />
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/RustQC/GM12878_REP1.markdup.sorted_duprateExpDens.png`} alt="RustQC density scatter plot" style={{width: "100%"}} />
<figcaption>RustQC</figcaption>
</figure>
</div>

#### Duplication rate boxplot

<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 1rem 0;">
<figure style="margin: 0; text-align: center;">
<img src="/benchmarks/large/dupRadar/duprateExpBoxplot.png" alt="dupRadar (R) duplication rate boxplot" style="width: 100%;" />
<div style={{display: "grid", gridTemplateColumns: "1fr 1fr", gap: "1rem", margin: "1rem 0"}}>
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/dupRadar/duprateExpBoxplot.png`} alt="dupRadar (R) duplication rate boxplot" style={{width: "100%"}} />
<figcaption>dupRadar (R)</figcaption>
</figure>
<figure style="margin: 0; text-align: center;">
<img src="/benchmarks/large/RustQC/GM12878_REP1.markdup.sorted_duprateExpBoxplot.png" alt="RustQC duplication rate boxplot" style="width: 100%;" />
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/RustQC/GM12878_REP1.markdup.sorted_duprateExpBoxplot.png`} alt="RustQC duplication rate boxplot" style={{width: "100%"}} />
<figcaption>RustQC</figcaption>
</figure>
</div>

#### Expression histogram

<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 1rem 0;">
<figure style="margin: 0; text-align: center;">
<img src="/benchmarks/large/dupRadar/expressionHist.png" alt="dupRadar (R) expression histogram" style="width: 100%;" />
<div style={{display: "grid", gridTemplateColumns: "1fr 1fr", gap: "1rem", margin: "1rem 0"}}>
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/dupRadar/expressionHist.png`} alt="dupRadar (R) expression histogram" style={{width: "100%"}} />
<figcaption>dupRadar (R)</figcaption>
</figure>
<figure style="margin: 0; text-align: center;">
<img src="/benchmarks/large/RustQC/GM12878_REP1.markdup.sorted_expressionHist.png" alt="RustQC expression histogram" style="width: 100%;" />
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/RustQC/GM12878_REP1.markdup.sorted_expressionHist.png`} alt="RustQC expression histogram" style={{width: "100%"}} />
<figcaption>RustQC</figcaption>
</figure>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ title: featureCounts Benchmark
description: Performance and accuracy comparison between RustQC's built-in read counting and Rsubread featureCounts.
---

export const base = import.meta.env.BASE_URL;

RustQC includes built-in gene-level read counting that produces output
compatible with the Subread featureCounts format. This page compares the
counting performance and output accuracy against standalone Rsubread
Expand Down Expand Up @@ -48,6 +50,49 @@ exactly.
The output format is directly compatible with downstream tools such as DESeq2
and MultiQC.

### Side-by-side plots

Since dupRadar visualizations are derived from the same gene-level counts, identical plots confirm that the underlying feature counting is correct. The plots below compare R dupRadar output (left) with RustQC output (right) for the large benchmark.

#### Density scatter plot

<div style={{display: "grid", gridTemplateColumns: "1fr 1fr", gap: "1rem", margin: "1rem 0"}}>
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/dupRadar/duprateExpDens.png`} alt="dupRadar (R) density scatter plot" style={{width: "100%"}} />
<figcaption>dupRadar (R)</figcaption>
</figure>
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/RustQC/GM12878_REP1.markdup.sorted_duprateExpDens.png`} alt="RustQC density scatter plot" style={{width: "100%"}} />
<figcaption>RustQC</figcaption>
</figure>
</div>

#### Duplication rate boxplot

<div style={{display: "grid", gridTemplateColumns: "1fr 1fr", gap: "1rem", margin: "1rem 0"}}>
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/dupRadar/duprateExpBoxplot.png`} alt="dupRadar (R) duplication rate boxplot" style={{width: "100%"}} />
<figcaption>dupRadar (R)</figcaption>
</figure>
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/RustQC/GM12878_REP1.markdup.sorted_duprateExpBoxplot.png`} alt="RustQC duplication rate boxplot" style={{width: "100%"}} />
<figcaption>RustQC</figcaption>
</figure>
</div>

#### Expression histogram

<div style={{display: "grid", gridTemplateColumns: "1fr 1fr", gap: "1rem", margin: "1rem 0"}}>
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/dupRadar/expressionHist.png`} alt="dupRadar (R) expression histogram" style={{width: "100%"}} />
<figcaption>dupRadar (R)</figcaption>
</figure>
<figure style={{margin: 0, textAlign: "center"}}>
<img src={`${base}benchmarks/large/RustQC/GM12878_REP1.markdup.sorted_expressionHist.png`} alt="RustQC expression histogram" style={{width: "100%"}} />
<figcaption>RustQC</figcaption>
</figure>
</div>

## Additional outputs

Beyond the standard featureCounts counts file and summary, RustQC also
Expand Down
8 changes: 5 additions & 3 deletions docs/src/content/docs/outputs/dupradar.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ description: Comprehensive guide to RustQC's dupRadar output files, including th

import { Card, CardGrid, FileTree } from '@astrojs/starlight/components';

export const base = import.meta.env.BASE_URL;

## What is dupRadar?

In DNA sequencing, PCR duplicates are straightforward to identify and remove: reads with identical alignment coordinates are likely amplification artifacts. In **RNA-seq**, the situation is more nuanced.
Expand Down Expand Up @@ -118,15 +120,15 @@ See the [Interpreting plots](#interpreting-plots) section below for how to read
<CardGrid>
<Card title="Density scatter plot">
`<sample>_duprateExpDens.{png,svg}`
![Density scatter plot](/RustQC/examples/dupradar/duprateExpDens.png)
<img src={`${base}examples/dupradar/duprateExpDens.png`} alt="Density scatter plot" />
</Card>
<Card title="Duplication rate boxplot">
`<sample>_duprateExpBoxplot.{png,svg}`
![Duplication rate boxplot](/RustQC/examples/dupradar/duprateExpBoxplot.png)
<img src={`${base}examples/dupradar/duprateExpBoxplot.png`} alt="Duplication rate boxplot" />
</Card>
<Card title="Expression histogram">
`<sample>_expressionHist.{png,svg}`
![Expression histogram](/RustQC/examples/dupradar/expressionHist.png)
<img src={`${base}examples/dupradar/expressionHist.png`} alt="Expression histogram" />
</Card>
</CardGrid>

Expand Down
12 changes: 7 additions & 5 deletions docs/src/content/docs/outputs/rseqc.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ description: Output files produced by RustQC's RSeQC-compatible quality control

import { Card, CardGrid, FileTree } from '@astrojs/starlight/components';

export const base = import.meta.env.BASE_URL;

RustQC reimplements seven tools from the [RSeQC](https://rseqc.sourceforge.net/)
package. Each tool produces output files that match the format and content of the
original Python implementation, plus **native PNG and SVG plots** generated
Expand Down Expand Up @@ -87,7 +89,7 @@ high duplication.

<CardGrid>
<Card title="Duplication rate">
<img src="/RustQC/examples/rseqc/read_duplication.png" alt="Read duplication rate plot" />
<img src={`${base}examples/rseqc/read_duplication.png`} alt="Read duplication rate plot" />
</Card>
</CardGrid>

Expand Down Expand Up @@ -136,10 +138,10 @@ known (blue), partial novel (red), and complete novel (green) splicing.

<CardGrid>
<Card title="Splice events">
<img src="/RustQC/examples/rseqc/splice_events.png" alt="Splice events pie chart" />
<img src={`${base}examples/rseqc/splice_events.png`} alt="Splice events pie chart" />
</Card>
<Card title="Splice junctions">
<img src="/RustQC/examples/rseqc/splice_junction.png" alt="Splice junctions pie chart" />
<img src={`${base}examples/rseqc/splice_junction.png`} alt="Splice junctions pie chart" />
</Card>
</CardGrid>

Expand Down Expand Up @@ -169,7 +171,7 @@ detected (in thousands). A plateau in the curves indicates saturation.

<CardGrid>
<Card title="Junction saturation">
<img src="/RustQC/examples/rseqc/junction_saturation.png" alt="Junction saturation plot" />
<img src={`${base}examples/rseqc/junction_saturation.png`} alt="Junction saturation plot" />
</Card>
</CardGrid>

Expand Down Expand Up @@ -210,7 +212,7 @@ approximately normal for a well-prepared library.

<CardGrid>
<Card title="Inner distance">
<img src="/RustQC/examples/rseqc/inner_distance.png" alt="Inner distance histogram" />
<img src={`${base}examples/rseqc/inner_distance.png`} alt="Inner distance histogram" />
</Card>
</CardGrid>

Expand Down
Loading