///|
fn main {
println("=== GenomicFeatures Demo ===")
let annotation = @src.create_example_annotation()
println("\n1. Annotation Summary:")
println(@src.genome_annotation_summarize(annotation))
println("\n2. Get gene by ID (ENSG00000130203):")
let tp53 = @src.genome_annotation_get_gene_by_id(
annotation, "ENSG00000130203",
)
if tp53 is Some(_) {
println(tp53.unwrap().to_string())
}
println("\n3. Get genes on chromosome chr17:")
let chr17_genes = @src.genome_annotation_genes_on_chromosome(
annotation, "chr17",
)
let mut i = 0
while i < chr17_genes.length() {
println(chr17_genes[i].gene_name + " (" + chr17_genes[i].gene_id + ")")
i = i + 1
}
println("\n4. Get genes in region chr17:7,000,000-8,000,000:")
let region_genes = @src.genome_annotation_genes_in_region(
annotation, "chr17", 7000000, 8000000,
)
i = 0
while i < region_genes.length() {
println(
region_genes[i].gene_name +
": " +
region_genes[i].chromosome +
":" +
region_genes[i].start.to_string() +
"-" +
region_genes[i].end.to_string(),
)
i = i + 1
}
println("\n5. Get transcripts for TP53:")
let tp53_transcripts = @src.genome_annotation_get_transcripts_by_gene(
annotation, "ENSG00000130203",
)
i = 0
while i < tp53_transcripts.length() {
let tx = tp53_transcripts[i]
println(
" " +
tx.transcript_id +
" (" +
tx.transcript_name +
"), exons: " +
tx.exons.length().to_string(),
)
i = i + 1
}
println("\n6. Parse GTF content:")
let gtf_content = "chr17\tENSEMBL\tgene\t7661779\t7687550\t.\t-\t.\tgene_id \"ENSG00000130203\"; gene_name \"TP53\"; gene_biotype \"protein_coding\";\n" +
"chr17\tENSEMBL\ttranscript\t7661779\t7687550\t.\t-\t.\ttranscript_id \"ENST00000357654\"; gene_id \"ENSG00000130203\";\n"
let parsed = @src.gf_parse_gtf(gtf_content)
println(
" Genes parsed: " + @src.genome_annotation_count_genes(parsed).to_string(),
)
println(
" Transcripts parsed: " +
@src.genome_annotation_count_transcripts(parsed).to_string(),
)
println("\nGenomicFeatures demo completed!")
}