///|
/// tradeSeq Demo - Trajectory Differential Expression Analysis.
/// Inspired by Bioconductor tradeSeq package.
///|
fn main {
println("=== tradeSeq Trajectory DE Demo ===")
println("Inspired by Bioconductor tradeSeq package")
println("")
println("1. Creating trajectory data...")
let data = @src.create_example_trajectory_data()
println(" Cells: \{data.n_points.to_string()}")
println(" Genes: \{data.n_genes.to_string()}")
println(" Conditions: \{data.conditions.length().to_string()}")
println("")
println("2. Gene names:")
let genes = data.genes
let mut g = 0
while g < genes.length() {
println(" Gene \{g.to_string()}: \{genes[g]}")
g = g + 1
}
println("")
println("3. Running tradeSeq analysis...")
let result = @src.run_tradeseq_analysis(
data,
data.genes,
data.conditions,
4,
0.05,
)
println(" Genes tested: \{result.n_genes.to_string()}")
println(" Significant genes: \{result.n_significant.to_string()}")
println("")
println("4. Gene-level results:")
let mut gr = 0
while gr < result.gene_results.length() {
let gene_result = result.gene_results[gr]
println(
" \{gene_result.gene_id}: p-value = \{gene_result.p_value.to_string()}, adj p-value = \{gene_result.adjusted_p_value.to_string()}, significant = \{gene_result.significant.to_string()}",
)
gr = gr + 1
}
println("")
println("5. Gene expression smoothing (GeneA):")
let smooth_a = @src.calculate_gene_smooth(data, "GeneA", 4, 10)
let mut s = 0
while s < smooth_a.fitted.length() {
println(
" Time point \{s.to_string()}: pseudotime = \{smooth_a.pseudotime[s].to_string()}, fitted = \{smooth_a.fitted[s].to_string()}",
)
s = s + 1
}
println("")
println("6. tradeSeq summary:")
let summary = @src.tradeseq_summary(result)
println(" \{summary}")
println("=== tradeSeq demo completed ===")
}