// 解析 FASTA
let records = seqio_parse(fasta_content, "fasta")
// 解析 FASTQ
let records = seqio_parse(fastq_content, "fastq")
// 解析 GenBank
let record = seqio_read(genbank_content, "genbank")
// 写入序列
let text = seqio_write(records, "fasta")
3. 比对算法 (scikit-bio)
// 创建类型化序列
let dna1 = DNA::new("ACGTACGT")
let dna2 = DNA::new("CGT")
// Needleman-Wunsch 全局比对
let (msa, score, pos) = global_pairwise_align_nucleotide(dna1, dna2)
// Smith-Waterman 局部比对
let (msa, score, pos) = local_pairwise_align_nucleotide(dna1, dna2)
// 蛋白质比对
let prot1 = Protein::new("ACDE")
let prot2 = Protein::new("ACE")
let (msa, score, pos) = global_pairwise_align_protein(prot1, prot2)
4. SAM 文件解析 (pysam)
// 解析 SAM
let sam = parse_sam(sam_content)
// 访问记录
for record in sam.records {
record.qname // 读取名
record.flag // 标志位
record.is_paired() // 是否配对
record.is_reverse() // 是否反向互补
record.get_cigar() // CIGAR 数组
}
5. VCF 文件解析 (pysam)
// 解析 VCF
let vcf = parse_vcf(vcf_content)
// 访问记录
for record in vcf.records {
record.chrom // 染色体
record.pos // 位置
record.is_snp() // 是否 SNP
record.is_indel() // 是否插入/缺失
record.get_info("AC") // INFO 字段
}
// 解析 PDB
let structure = parse_pdb(pdb_content)
// 遍历结构
for model in structure.models {
for chain in model.chains {
for residue in chain.residues {
for atom in residue.atoms {
atom.get_coord() // → Vector3
atom.distance(other) // → Double
}
}
}
}
8. FASTA 快速索引访问 (pyfaidx)
// 从内容创建索引
let fa = Fasta::from_content(fasta_content)
// 获取完整序列
let seq = fa.get_seq("chr1") // → Seq?
// 快速随机访问子序列 (0-based, [start, end))
let sub = fa.fetch("chr1", 1000, 2000)? // → Seq?
// 获取序列长度
let len = fa.get_length("chr1") // → Int?
// 检查序列是否存在
fa.contains("chr1") // → Bool
// 获取所有序列名称
fa.get_names() // → Array[String]
// 构建并写入 .fai 索引
let idx = build_fai(fasta_content)
let fai_str = write_fai(idx)
// 从 .fai 索引创建 Fasta
let fa = Fasta::new(fasta_content, fai_str)?
9. 机器学习特征提取
// DNA 特征提取
let dna_seq = "ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG"
// k-mer 频率
let kmer_freq = kmer_frequency(dna_seq, 3, true)
// 规范 k-mer (考虑反向互补)
let canonical = dna_canonical_kmer_frequency(dna_seq, 3, true)
// 核苷酸组成
let comp = nucleotide_composition(dna_seq)
// comp.a, comp.t, comp.g, comp.c
// DNA 特征向量 (42维)
let dna_features = dna_feature_vector(dna_seq)
let dna_names = dna_feature_names()
// 蛋白质特征提取
let prot_seq = "MKKLLLISVLLFLSSAYSR"
// 氨基酸组成
let aa_comp = amino_acid_composition(prot_seq)
// 二肽/三肽组成
let dipep = dipeptide_composition(prot_seq)
let tripep = tripeptide_composition(prot_seq)
// 理化性质
let avg_h = avg_hydrophobicity(prot_seq) // Kyte-Doolittle 疏水性
let avg_c = avg_charge(prot_seq) // 电荷
let avg_p = avg_polarity(prot_seq) // 极性
let mw = molecular_weight(prot_seq) // 分子量
// 二级结构倾向 (Chou-Fasman)
let (helix, sheet, coil) = secondary_structure_propensity(prot_seq)
// 位置特异性特征
let pos_feat = position_specific_features(prot_seq, 5)
// 蛋白质特征向量 (73维)
let prot_features = protein_feature_vector(prot_seq)
let prot_names = protein_feature_names()
BioSeqs - MoonBit 生物信息学库
项目概述
BioSeqs 是一个基于 MoonBit 语言开发的生物信息学工具库,旨在复刻以下 Python 生物信息学库的核心功能:
架构设计
项目结构
样例测试
模块对照表
seq.mbtBio.Seqseq_record.mbtBio.SeqRecordseqfeature.mbtBio.SeqFeatureseqio.mbtBio.SeqIOfasta_io.mbtBio.SeqIO.FastaIOfastq_io.mbtBio.SeqIO.QualityIOgenbank_io.mbtBio.SeqIO.GenBankIOalign.mbtBio.Alignalignio.mbtBio.AlignIOclustal_io.mbtBio.AlignIO.ClustalIOphylip_io.mbtBio.AlignIO.PhylipIOalignment.mbtskbio.alignmentphylo.mbtBio.Phylonewick_io.mbtBio.Phylo.NewickIOpdb.mbtBio.PDBpdb_io.mbtBio.PDB.PDBIOsequtils.mbtBio.SeqUtilscomplement.mbtBio.Data.IUPACDatacodon_table.mbtBio.Data.CodonTablesam.mbtvcf.mbtfaidx.mbtfeature_extraction.mbt核心功能实现
1. 序列处理 (Bio.Seq)
2. 序列 I/O (Bio.SeqIO)
3. 比对算法 (scikit-bio)
4. SAM 文件解析 (pysam)
5. VCF 文件解析 (pysam)
6. 系统发育树 (Bio.Phylo)
7. PDB 结构解析 (Bio.PDB)
8. FASTA 快速索引访问 (pyfaidx)
9. 机器学习特征提取
性能优化
优化策略
FixedArray[UInt16]实现直接索引的互补碱基查找表,避免 Map 查找开销unsafe_get和FixedArray避免中间字符串分配性能基准测试 (Python 参考)
测试验证
测试覆盖率
测试模块分布
bio_seq_test.mbtsequtils_test.mbtseqfeature_test.mbtseqio_wb_test.mbtbio_seq_wb_test.mbtphylo_test.mbtpdb_test.mbtalignment_test.mbtsam_test.mbtvcf_test.mbtfaidx_test.mbtfeature_extraction_test.mbtPython 对比测试
运行 Python 参考脚本验证结果一致性:
使用方法
构建与测试
命令行工具
示例程序
项目提供 8 个示例程序,展示各模块的典型用法:
moon run examples/basic_seq/main.mbtmoon run examples/seqio_demo/main.mbtmoon run examples/alignment_demo/main.mbtmoon run examples/phylo_demo/main.mbtmoon run examples/pdb_demo/main.mbtmoon run examples/sam_vcf_demo/main.mbtmoon run examples/faidx_demo/main.mbtmoon run examples/ml_features/main.mbt技术栈
开发规范
代码风格
///|分隔代码块pub修饰suberror定义_test.mbt(黑盒) /_wbtest.mbt(白盒) 后缀命名约定
SeqRecord,Clade,TabularMSA,Fastaparse_fasta,reverse_complement,build_faipub修饰fasta_io.mbt,alignment.mbt,faidx.mbt模块_功能格式:seq_complement,alignment_global_pairwise_nucleotide,faidx_build_index未来规划
许可证
Apache-2.0 License