///|
/// karyoploteR module example - Karyotype visualization for genomic data.
///
/// Run: moon run examples/karyoploter_demo
fn main {
println("=== karyoploteR Module Demo ===")
println("")
// Create a karyotype plot
println("=== Creating Karyotype Plot ===")
let plot = @bio.KaryotypePlot::new("hg38")
println("Genome: \{plot.get_genome()}")
println("Chromosomes: \{plot.get_chromosomes().length()}")
println("")
// Chromosome sizes
println("=== Chromosome Sizes ===")
let chroms = plot.get_chromosomes()
let mut i = 0
while i < 5 {
let chr = chroms[i]
let _size = plot.get_chromosome_size(chr)
println(" \{chr}: @{size} bp")
i = i + 1
}
println("")
// Add a data track
println("=== Adding Data Tracks ===")
let mut gc_track = @bio.KaryotypeTrack::new(
"gc",
@bio.track_type_lines(),
"chr1",
0,
248956422,
"GC Content",
)
gc_track = gc_track.set_color("#FF6600")
let mut j = 0
while j < 10 {
let pos = j * 24895642 // evenly spaced positions on chr1
let value = 0.35 + 0.2 * (j.to_double() / 10.0)
gc_track = gc_track.add_point(@bio.TrackPoint::new("chr1", pos, value, ""))
j = j + 1
}
let plot2 = plot.add_track(gc_track)
println("Track 1 added: GC Content")
// Add a second track
let mut snp_track = @bio.KaryotypeTrack::new(
"snp",
@bio.track_type_bars(),
"chr1",
0,
248956422,
"SNP Density",
)
snp_track = snp_track.set_color("#003399")
snp_track = snp_track.set_y_range(0.0, 1.0)
let mut k = 0
while k < 8 {
let pos = k * 31119553
let value = 0.2 + 0.5 * (k.to_double() / 8.0)
snp_track = snp_track.add_point(
@bio.TrackPoint::new("chr1", pos, value, ""),
)
k = k + 1
}
let plot3 = plot2.add_track(snp_track)
println("Track 2 added: SNP Density")
// Add regions of interest
println("")
println("=== Adding Regions of Interest ===")
let region1 = @bio.KaryotypeRegion::new(
"chr1", 11000000, 12000000, "BRCA2 region", "#FF0000",
)
let region2 = @bio.KaryotypeRegion::new(
"chr1", 28000000, 30000000, "TP53 region", "#00FF00",
)
let plot4 = plot3.add_region(region1).add_region(region2)
println("Region 1: BRCA2 (chr1:11M-12M)")
println("Region 2: TP53 (chr1:28M-30M)")
println("")
// Filter tracks by chromosome
println("=== Chromosome Filtering ===")
let _chr1_tracks = plot4.tracks // just check what we have
println("Total tracks: \{plot4.get_n_tracks()}")
println("Total regions: \{plot4.get_n_regions()}")
println("")
// Generate ASCII visualization for chr1
println("=== Chromosome 1 Visualization ===")
let ascii = plot4.to_ascii("chr1", 70)
println(ascii)
// Summary
println("=== Plot Summary ===")
println(plot4.summary())
// Sample
println("=== Sample Karyotype ===")
let sample = @bio.karyotype_sample()
println(sample.summary())
println("=== Done ===")
}