use serde::Serialize;
#[derive(Debug, Serialize)]
pub struct RunSummary {
pub version: String,
pub commit: String,
pub timestamp_start: String,
pub timestamp_end: String,
pub runtime_seconds: f64,
pub inputs: Vec<InputSummary>,
}
#[derive(Debug, Serialize)]
pub struct InputSummary {
pub bam_file: String,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
pub runtime_seconds: f64,
#[serde(skip_serializing_if = "Option::is_none")]
pub counting: Option<CountingSummary>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dupradar: Option<DupradarSummary>,
pub outputs: Vec<OutputFile>,
}
#[derive(Debug, Serialize)]
pub struct CountingSummary {
pub total_reads: u64,
pub mapped_reads: u64,
pub fragments: u64,
pub assigned: u64,
pub no_features: u64,
pub ambiguous: u64,
pub duplicates: u64,
pub multimappers: u64,
pub assigned_pct: f64,
pub duplicate_pct: f64,
}
#[derive(Debug, Serialize)]
pub struct DupradarSummary {
pub total_genes: u64,
pub genes_with_reads: u64,
pub genes_with_duplication: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub intercept: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slope: Option<f64>,
}
#[derive(Debug, Serialize)]
pub struct OutputFile {
pub tool: String,
pub path: String,
}