///|
fn main {
println("=== Graph Demo ===")
let ppi_graph = @src.create_example_graph()
println("\n1. PPI Graph Summary:")
println(@src.graph_summarize(ppi_graph))
println("\n2. Get neighbors of TP53:")
let tp53_neighbors = @src.graph_get_neighbors(ppi_graph, "TP53")
let mut i = 0
while i < tp53_neighbors.length() {
println(tp53_neighbors[i])
if i < tp53_neighbors.length() - 1 {
println(", ")
}
i = i + 1
}
println("")
println("\n3. Get degree of BRCA1:")
println(" Degree: " + @src.graph_get_degree(ppi_graph, "BRCA1").to_string())
println("\n4. Check edge between TP53 and BRCA1:")
println(
" Has edge: " + @src.graph_has_edge(ppi_graph, "TP53", "BRCA1").to_string(),
)
println("\n5. Shortest path from TP53 to CHEK2:")
let path = @src.graph_shortest_path(ppi_graph, "TP53", "CHEK2")
if path is Some(_) {
let path_arr = path.unwrap()
i = 0
while i < path_arr.length() {
println(path_arr[i])
if i < path_arr.length() - 1 {
println(" -> ")
}
i = i + 1
}
println("")
}
println("\n6. Connected components:")
let components = @src.graph_connected_components(ppi_graph)
println(" Number of components: " + components.length().to_string())
println("\n=== Directed Pathway Graph ===")
let pathway_graph = @src.create_pathway_graph()
println("\n7. Pathway Graph Summary:")
println(@src.graph_summarize(pathway_graph))
println("\n8. Shortest path from G1 to M phase:")
let cell_cycle_path = @src.graph_shortest_path(pathway_graph, "G1", "M")
if cell_cycle_path is Some(_) {
let cc_path_arr = cell_cycle_path.unwrap()
i = 0
while i < cc_path_arr.length() {
println(cc_path_arr[i])
if i < cc_path_arr.length() - 1 {
println(" -> ")
}
i = i + 1
}
println("")
}
println("\n9. Generate DOT format:")
let dot = @src.graph_to_dot(ppi_graph)
println(dot)
println("\nGraph demo completed!")
}