///|
fn main {
println("=== rtracklayer Demo ===")
println("")
println("1. Parse BED format")
let bed_content = "chr1\t100\t200\tgene1\t500\t+\nchr2\t300\t400\tgene2\t700\t-\nchr1\t500\t600\tgene3\t300\t."
let bed_records = @bio.parse_bed(bed_content)
let mut i = 0
while i < bed_records.length() {
let r = bed_records[i]
println(" \{r.chrom}:\{r.chrom_start}-\{r.chrom_end} \{r.name}")
i = i + 1
}
println("")
println("2. BED to GRanges")
let gr_from_bed = @bio.bed_to_granges(bed_records)
i = 0
while i < gr_from_bed.seqnames.length() {
println(
" \{gr_from_bed.seqnames[i]}:\{gr_from_bed.starts[i]}-\{gr_from_bed.ends[i]}",
)
i = i + 1
}
println("")
println("3. Parse WIG format (variableStep)")
let wig_content = "variableStep chrom=chr1 span=5\n100\t1.5\n105\t2.0\n110\t1.8"
let wig_records = @bio.parse_wig(wig_content)
i = 0
while i < wig_records.length() {
let r = wig_records[i]
let mut j = 0
while j < r.positions.length() {
println(" pos=\{r.positions[j]}, value=\{r.values[j]}")
j = j + 1
}
i = i + 1
}
println("")
println("4. Parse WIG format (fixedStep)")
let wig_fixed = "fixedStep chrom=chr1 start=100 step=10\n1.5\n2.0\n1.8"
let wig_fixed_records = @bio.parse_wig(wig_fixed)
i = 0
while i < wig_fixed_records.length() {
let r = wig_fixed_records[i]
let mut j = 0
while j < r.positions.length() {
println(" pos=\{r.positions[j]}, value=\{r.values[j]}")
j = j + 1
}
i = i + 1
}
println("")
println("5. Parse BEDGraph format")
let bg_content = "track type=bedGraph\nchr1\t100\t200\t1.5\nchr1\t200\t300\t2.0\nchr2\t100\t150\t0.5"
let bg_records = @bio.parse_bedgraph(bg_content)
i = 0
while i < bg_records.length() {
let r = bg_records[i]
println(" \{r.chrom}:\{r.chrom_start}-\{r.chrom_end} value=\{r.value}")
i = i + 1
}
println("")
println("6. Parse GFF format")
let gff_content = "##gff-version 3\nchr1\tensembl\tgene\t100\t200\t5.5\t+\t0\tID=gene1;Name=GeneA\nchr2\tensembl\tgene\t300\t400\t.\t-\t1\tID=gene2;Name=GeneB"
let gff_records = @bio.parse_gff(gff_content)
i = 0
while i < gff_records.length() {
let r = gff_records[i]
println(" \{r.seqid}:\{r.start}-\{r.end} \{r.feature_type} \{r.source}")
i = i + 1
}
println("")
println("7. GFF to GRanges")
let gr_from_gff = @bio.gff_to_granges(gff_records)
i = 0
while i < gr_from_gff.seqnames.length() {
println(
" \{gr_from_gff.seqnames[i]}:\{gr_from_gff.starts[i]}-\{gr_from_gff.ends[i]}",
)
i = i + 1
}
println("")
println("8. Write BED format")
let bed_output = @bio.write_bed(bed_records)
println("BED output:")
println(bed_output)
println("")
println("9. Write WIG format")
let wig_output = @bio.write_wig(wig_records)
println("WIG output:")
println(wig_output)
println("")
println("10. Write BEDGraph format")
let bg_output = @bio.write_bedgraph(bg_records)
println("BEDGraph output:")
println(bg_output)
println("")
println("11. Write GFF format")
let gff_output = @bio.write_gff(gff_records)
println("GFF output:")
println(gff_output)
}