///|
/// HLA 分型演示.
///
/// 展示基于 NGS 读取的 HLA 基因座高分辨率分型流程:
/// 1. 加载 HLA 参考序列数据库
/// 2. 对模拟读取进行分型
/// 3. 输出 GL String 格式结果
///|
/// 主函数: 演示 HLA 分型流程.
fn main {
let db = @src.hla_reference_db()
println(
"HLA 参考数据库: " + db.length().to_string() + " 个等位基因",
)
for entry in db {
println(
" - " +
entry.allele() +
" (" +
entry.locus() +
", exon " +
entry.exon().to_string() +
")",
)
}
// 模拟读取: 来自 HLA-A*02:01 的片段
let ref02 = db[0].seq
let reads : Array[String] = [
ref02[0:50].to_owned(),
ref02[50:100].to_owned(),
ref02[100:150].to_owned(),
ref02[150:200].to_owned(),
]
println("\n模拟读取数: " + reads.length().to_string())
println("逐条读取分型结果:")
for read in reads {
let call = @src.hla_type_read(read)
println(
" - " +
call.allele() +
" (score=" +
call.score().to_string() +
", " +
call.matches().to_string() +
"/" +
call.total().to_string() +
" match)",
)
}
let gl = @src.hla_type_batch(reads)
println("\n批量分型结果(GL String): " + gl)
// 杂合子示例
let ref01 = db[1].seq
let het_reads : Array[String] = [
ref02[0:50].to_owned(),
ref01[0:50].to_owned(),
ref02[50:100].to_owned(),
]
let het_gl = @src.hla_type_batch(het_reads)
println("\n杂合子示例 GL String: " + het_gl)
}