///|
fn sequence_region_ref(
name : String,
category : String,
topology : String,
description : String,
typical_scope : String,
) -> SequenceRegionReference {
{ name, category, topology, description, typical_scope }
}
///|
pub fn sequence_region_references() -> Array[SequenceRegionReference] {
[
sequence_region_ref(
"chromosome", "primary_assembly", "linear", "A chromosome-level assembled molecule",
"complete eukaryotic assemblies",
),
sequence_region_ref(
"autosome", "primary_assembly", "linear", "A non-sex chromosome molecule",
"diploid organism assemblies",
),
sequence_region_ref(
"sex_chromosome", "primary_assembly", "linear", "A chromosome involved in sex determination",
"sex chromosome annotation",
),
sequence_region_ref(
"mitochondrion", "organelle", "circular", "A mitochondrial genome molecule",
"mitochondrial annotation",
),
sequence_region_ref(
"chloroplast", "organelle", "circular", "A chloroplast genome molecule", "plant and algal annotation",
),
sequence_region_ref(
"plastid", "organelle", "circular", "A plastid genome molecule", "plant and algal annotation",
),
sequence_region_ref(
"apicoplast", "organelle", "circular", "An apicoplast genome molecule", "apicomplexan annotation",
),
sequence_region_ref(
"plasmid", "extra_chromosomal", "circular", "An extra-chromosomal plasmid sequence",
"microbial annotation",
),
sequence_region_ref(
"viral_segment", "extra_chromosomal", "linear", "A viral genome segment", "viral annotation",
),
sequence_region_ref(
"contig", "assembly_unit", "linear", "A contiguous assembled sequence", "draft assemblies",
),
sequence_region_ref(
"scaffold", "assembly_unit", "linear", "A sequence scaffold built from ordered contigs",
"draft assemblies",
),
sequence_region_ref(
"supercontig", "assembly_unit", "linear", "A higher-level assembly unit above contig level",
"large draft assemblies",
),
sequence_region_ref(
"ultracontig", "assembly_unit", "linear", "A large contig-like assembly unit used by some providers",
"provider-specific assemblies",
),
sequence_region_ref(
"linkage_group", "assembly_unit", "linear", "A chromosome-scale unit defined by genetic linkage",
"genetic map assemblies",
),
sequence_region_ref(
"unplaced_scaffold", "assembly_exception", "linear", "A scaffold not assigned to a chromosome",
"assembly reports",
),
sequence_region_ref(
"unlocalized_scaffold", "assembly_exception", "linear", "A scaffold assigned to a chromosome but not a precise location",
"assembly reports",
),
sequence_region_ref(
"alternate_locus", "assembly_exception", "linear", "An alternate representation of a genomic locus",
"complex loci",
),
sequence_region_ref(
"haplotype", "assembly_exception", "linear", "A haplotype-specific sequence representation",
"diploid or pangenome assemblies",
),
sequence_region_ref(
"patch_fix", "assembly_patch", "linear", "A patch sequence that fixes a primary assembly issue",
"reference assembly updates",
),
sequence_region_ref(
"patch_novel", "assembly_patch", "linear", "A patch sequence that adds alternate novel sequence",
"reference assembly updates",
),
sequence_region_ref(
"novel_patch", "assembly_patch", "linear", "A synonym-like label for a novel assembly patch",
"reference assembly updates",
),
sequence_region_ref(
"fix_patch", "assembly_patch", "linear", "A synonym-like label for a fixing assembly patch",
"reference assembly updates",
),
sequence_region_ref(
"decoy", "auxiliary", "linear", "An auxiliary sequence used to absorb ambiguous alignments",
"alignment-aware annotation",
),
sequence_region_ref(
"adapter", "auxiliary", "linear", "An adapter or technical sequence entry",
"quality control",
),
sequence_region_ref(
"spike_in", "auxiliary", "linear", "A spike-in control sequence", "experimental control annotation",
),
sequence_region_ref(
"phage", "extra_chromosomal", "linear", "A bacteriophage sequence region",
"microbial annotation",
),
sequence_region_ref(
"provirus", "extra_chromosomal", "linear", "A viral-derived region integrated in a host assembly",
"host genome annotation",
),
sequence_region_ref(
"integrated_plasmid", "extra_chromosomal", "linear", "A plasmid-derived region integrated in a chromosome",
"microbial annotation",
),
sequence_region_ref(
"centromeric_satellite", "repeat_context", "linear", "A sequence unit dominated by centromeric satellite repeats",
"repeat-rich assemblies",
),
sequence_region_ref(
"telomeric_repeat_array", "repeat_context", "linear", "A sequence unit dominated by telomeric repeats",
"telomere-to-telomere assemblies",
),
sequence_region_ref(
"rDNA_array", "repeat_context", "linear", "A ribosomal DNA repeat array sequence",
"repeat-rich assemblies",
),
sequence_region_ref(
"segmental_duplication", "repeat_context", "linear", "A sequence region enriched for segmental duplication",
"complex reference regions",
),
sequence_region_ref(
"pseudoautosomal_region", "sex_chromosome_region", "linear", "A homologous region shared between sex chromosomes",
"sex chromosome annotation",
),
sequence_region_ref(
"male_specific_region", "sex_chromosome_region", "linear", "A sex-chromosome region specific to male haplotypes",
"sex chromosome annotation",
),
sequence_region_ref(
"female_specific_region", "sex_chromosome_region", "linear", "A sex-chromosome region specific to female haplotypes",
"sex chromosome annotation",
),
sequence_region_ref(
"immune_locus", "complex_locus", "linear", "A sequence region containing immune receptor loci",
"immune gene annotation",
),
sequence_region_ref(
"olfactory_locus", "complex_locus", "linear", "A sequence region containing olfactory receptor genes",
"gene family annotation",
),
sequence_region_ref(
"histocompatibility_locus", "complex_locus", "linear", "A sequence region containing histocompatibility genes",
"immune gene annotation",
),
sequence_region_ref(
"gene_cluster", "complex_locus", "linear", "A sequence region described as a gene cluster",
"cluster-level annotation",
),
sequence_region_ref(
"bacterial_chromosome", "primary_assembly", "circular", "A bacterial chromosome molecule",
"microbial annotation",
),
sequence_region_ref(
"archaeal_chromosome", "primary_assembly", "circular", "An archaeal chromosome molecule",
"microbial annotation",
),
sequence_region_ref(
"linear_plasmid", "extra_chromosomal", "linear", "A plasmid sequence represented as linear",
"microbial annotation",
),
sequence_region_ref(
"circular_contig", "assembly_unit", "circular", "A circular contig assembly unit",
"microbial annotation",
),
sequence_region_ref(
"metagenome_contig", "metagenome", "linear", "A contig assembled from metagenomic reads",
"metagenome annotation",
),
sequence_region_ref(
"metagenome_bin", "metagenome", "linear", "A genome bin from metagenomic assembly",
"metagenome annotation",
),
sequence_region_ref(
"MAG", "metagenome", "linear", "A metagenome-assembled genome sequence set",
"metagenome annotation",
),
sequence_region_ref(
"SAG", "metagenome", "linear", "A single-cell amplified genome sequence set",
"single-cell annotation",
),
sequence_region_ref(
"pangenome_path", "pangenome", "linear", "A path through a pangenome representation",
"graph-aware annotation",
),
sequence_region_ref(
"reference_path", "pangenome", "linear", "A reference path through a pangenome",
"graph-aware annotation",
),
sequence_region_ref(
"alternate_path", "pangenome", "linear", "An alternate path through a pangenome",
"graph-aware annotation",
),
]
}
///|
pub fn find_sequence_region_reference(name : String) -> SequenceRegionReference {
for item in sequence_region_references() {
if item.name == name {
return item
}
}
sequence_region_ref(
name, "custom", "unknown", "Project-specific sequence region label", "local annotation",
)
}
///|
pub fn sequence_region_references_by_category(
category : String,
) -> Array[SequenceRegionReference] {
let result : Array[SequenceRegionReference] = []
for item in sequence_region_references() {
if item.category == category {
result.push(item)
}
}
result
}
///|
pub fn sequence_region_references_by_topology(
topology : String,
) -> Array[SequenceRegionReference] {
let result : Array[SequenceRegionReference] = []
for item in sequence_region_references() {
if item.topology == topology {
result.push(item)
}
}
result
}
///|
pub fn SequenceRegionReference::to_tsv_row(
self : SequenceRegionReference,
) -> String {
[
self.name,
self.category,
self.topology,
self.description,
self.typical_scope,
].join("\t")
}