Mellandd/GO3: Zenodo release
Abstract
GO3 New Release Notes This release introduces major enhancements to GAF 2.2 annotation parsing, native annotation filtering in Rust, transparent .gz support, bidirectional gene–term queries, expanded ontology graph traversal, pairwise GO term similarity/distance matrices, semantic redundancy reduction & clustering, and built-in Gene Ontology Enrichment Analysis (ORA). ────── What's New 1. Native GAF Annotation Filtering (load_gaf_terms) Filter annotations directly during Rust-level GAF parsing with zero Python overhead: • evidence_codes: Keep only annotations matching specific evidence codes (e.g., ["EXP", "IDA", "IPI", "IMP", "IGI", "IEP"]), or use only_experimental=True as a shortcut. • exclude_evidence_codes: Exclude specific evidence codes (e.g., ["IEA", "ND"]). • ignore_not=True: Automatically discard negative annotations (NOT qualifiers such as NOT|located_in). • aspects: Restrict loaded annotations to specific GO aspects (["P"], ["F"], ["C"] or "BP", "MF", "CC"). • taxons: Filter by NCBI taxon IDs (["taxon:9606"] or ["9606"]). • assigned_by: Keep only annotations curated by specific databases (e.g., ["UniProt", "MGI"]). 2. Full 17-Column GAF 2.2 Inspection (parse_gaf & GAFAnnotation) • Added go3.parse_gaf(path, ...) returning GAFAnnotation objects with all 17 GAF 2.2 columns (db, db_object_id, db_object_symbol, qualifier, go_id, db_reference, evidence_code, with_from, aspect, db_object_name, db_object_synonym, db_object_type, taxon, date, assigned_by, annotation_extension, gene_product_form_id). • Supports the exact same native filtering arguments as load_gaf_terms, plus to_dict() for seamless DataFrame conversion (pd.DataFrame([a.to_dict() for a in records])). 3. Transparent .gz Compressed File Support • load_obo, load_gaf_terms, and parse_gaf now transparently read .obo.gz and .gaf.gz files on the fly without requiring prior decompression on disk. 4. Bidirectional Gene–Term Lookup API Inspect the loaded GAF index directly from Python: • go3.list_genes(). List all loaded gene symbols. • go3.get_terms_for_gene(gene, ontology=None). Retrieve GO term IDs annotated to a gene (optionally filtered by ontology aspect). • go3.get_genes_for_term(go_id). Retrieve all genes directly annotated to a GO term. 5. Expanded Ontology Graph Traversal (GOTerm) • Added term.descendants (all transitive child terms) alongside term.ancestors. • Added term.relations (Dict[str, List[str]]) exposing typed ontology relationships (part_of, regulates, negatively_regulates, positively_regulates, etc.). • Added go3.list_terms(ontology=None) to list all non-obsolete GO term IDs, optionally filtered by ontology ("BP", "MF", "CC"). 6. Pairwise Term Similarity & Distance Matrices • go3.term_similarity_matrix(terms, similarity="lin"). Parallelized pairwise similarity matrix (N × N) for a list of GO terms. • go3.term_distance_matrix(terms, similarity="lin"). Normalized semantic distance matrix (1 - sim, with self-similarity normalized for unbounded metrics like "ic" / "resnik"), ready for scipy, scikit-learn, or umap. 7. Semantic Redundancy Reduction & GO Term Clustering • go3.reduce_redundant_terms(terms, threshold=0.7, similarity="lin", scores=None, prefer="ic"). REVIGO-style greedy semantic deduplication of GO term lists based on custom scores (e.g., -log₁₀(FDR)), Information Content ("ic"), or ontology depth ("depth"). • go3.cluster_go_terms(terms, threshold=0.7, similarity="lin"). Connected-components clustering of semantically related GO terms. 8. Native GO Enrichment Analysis (ORA) • go3.go_enrichment(...) & EnrichmentResult. High-performance Over-Representation Analysis computed in Rust with ontology ancestor propagation (true-path rule), exact one-tailed hypergeometric p-values, and multiple-testing correction ("bh" / Benjamini-Hochberg FDR or "bonferroni"). ────── 🛠 CI / Build Fixes • Enabled forward compatibility with Python 3.15 (PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1) and pinned default runner setup to Python 3.12 in GitHub Actions workflows for cross-platform wheel builds (linux, musllinux, windows, macos).
Fields of Study & Subjects
Bioinformatics and Genomic Networks
Genomics and Phylogenetic Studies
Biomedical Text Mining and Ontologies
Publication details
- Journal / source
- Zenodo (CERN European Organization for Nuclear Research)
- Publication date
- 15 January 2026