# 1. Initialize the project
ol_init("rnaseq_project")
# 2. Save raw data
set.seed(456)
raw_data <- data.frame(
gene_id = paste0("GENE", 1:200),
control_1 = rpois(200, 100),
control_2 = rpois(200, 100),
control_3 = rpois(200, 100),
treated_1 = rpois(200, 120),
treated_2 = rpois(200, 120),
treated_3 = rpois(200, 120)
)
ol_write("raw_expression", raw_data)
# 3. Save QC parameters
qc_params <- list(
min_counts = 10,
min_samples = 3,
method = "standard"
)
ol_save("qc_parameters", qc_params)
# 4. Post-QC data
qc_data <- raw_data[rowSums(raw_data[, -1] > 10) >= 3, ]
ol_write(
"qc_filtered",
qc_data,
depends_on = c("raw_expression", "qc_parameters")
)
# 5. Normalization parameters
norm_params <- list(
method = "TMM",
log_transform = TRUE
)
ol_save("norm_parameters", norm_params)
# 6. Normalized data
norm_data <- qc_data
for (i in 2:ncol(norm_data)) {
norm_data[[i]] <- log2(norm_data[[i]] + 1)
}
ol_write("normalized", norm_data,
depends_on = c("qc_filtered", "norm_parameters")
)
# 7. Statistical analysis parameters
stats_params <- list(
test = "t-test",
alpha = 0.05,
correction = "BH"
)
ol_save("stats_parameters", stats_params)
# 8. Statistical analysis results
set.seed(789)
de_final <- data.frame(
gene_id = sample(qc_data$gene_id, 30),
log2fc = rnorm(30, 1, 0.5),
pvalue = runif(30, 0, 0.05),
padj = runif(30, 0, 0.05)
)
ol_save("final_de_results", de_final,
depends_on = c("normalized", "stats_parameters")
)
# 9. Commit the analysis
ol_commit(
note = "Complete RNA-seq differential expression analysis",
params = list(
samples = 6,
genes_tested = nrow(qc_data),
significant = nrow(de_final),
date = as.character(Sys.Date())
)
)
# 10. Create a label
ol_label("final_analysis_v1")
# 11. View the full lineage
full_lineage <- ol_show_lineage("final_de_results", direction = "upstream")
print(full_lineage)
# 12. Visualize dependencies
if (requireNamespace("igraph", quietly = TRUE)) {
ol_plot_lineage("final_de_results",
direction = "upstream",
layout = "sugiyama",
main = "RNA-seq Analysis Pipeline"
)
}