goSorensen is a software package designed to implement a statistical method for the functional comparison of gene lists based on the joint enrichment of Gene Ontology terms and a measure derived from the Sorensen-Dice index, which assesses the functional dissimilarity between the compared gene lists. The present paper provides an overview of the underlying method, followed by a description of the package’s design and internal structure developed to efficiently manage the extensive data flow generated by the method. Finally, an application using real data is presented to illustrate the package’s functionality, accompanied by a complementary Shiny-based dashboard that enables dynamic visualisation of the input and output data involved in the analysis.
Since the introduction of microarrays (Schena et al. 1995; Nguyen et al. 2002), high-throughput omics technologies have advanced substantially, leading to the development of more advanced technologies such as RNA-seq (Chu and Corey 2012; Van den Berge et al. 2019), single-cell sequencing (Jovic et al. 2022), and other recent ones, which have transformed modern biology and medicine (Negi et al. 2022; Lee 2023). These high-throughput experiments allow us to study the behaviour of hundreds or thousands of genes (or proteins, metabolites, etc., often referred to as “features” in a general way) under different experimental conditions, resulting in lists of these features (e.g., a list of differentially expressed genes in a health condition) with critical information to solve relevant problems, such as the detection of bio-markers, drug development, molecular sub-classification of cancer, clinical applications, personalised medicine, among many others (Jain 2004; Pedersen and Kanigan 2016; Climente-González et al. 2017; Cieślik and Chinnaiyan 2018).
Although obtaining feature lists is an important first step, a comprehensive study should also include a functional analysis to elucidate the biological significance of these data. External biological knowledge databases, such as Gene Ontology GO (Ashburner et al. 2000; Consortium et al. 2023), Kyoto Encyclopedia of Genes and Genomes KEGG (Kanehisa and Goto 2000; Kanehisa et al. 2025), Reactome (Jassal et al. 2020), etc., serve as foundational resources for this purpose, enabling researchers to associate features in the lists with biological concepts or pathways and thereby gain meaningful insights into underlying mechanisms.
In particular, the goSorensen R package focuses on the functional comparison of gene lists using the Gene Ontology (GO) as a framework for representing biological knowledge. The GO is a structured, standardised representation of biological knowledge in which biological concepts, known as GO terms, are connected through formally defined relationships. It is designed to be species-agnostic, allowing gene products, such as the proteins or functional RNAs encoded by genes, from different organisms to be annotated using a common vocabulary and facilitating the comparison and integration of functional information across biological databases.
The GO is organised into three aspects, or sub-ontologies: Molecular Function (MF), Cellular Component (CC), and Biological Process (BP). Molecular Function terms represent molecular-level activities performed by gene products, such as catalytic or binding activities. Cellular Component terms capture the cellular location where a molecular function takes place, including cellular structures, membrane-enclosed compartments, and protein-containing complexes. Biological Process terms represent larger biological processes or programs accomplished by the concerted action of multiple molecular activities. Thus, the three GO aspects provide complementary descriptions of the activities performed by gene products, the cellular locations in which these activities occur, and the broader biological processes in which they participate.
Within each aspect, GO terms are organised hierarchically. The GO is structured as a graph in which terms are represented as nodes and the relationships between them as edges. Child terms are generally more specialised than their parent terms, although a term may have more than one parent. Consequently, the GO hierarchy is not a simple tree but a directed acyclic graph (DAG). Terms representing more general concepts connected to a given term are referred to as its ancestors, whereas more specialised terms below it in the hierarchy are its descendants.
Each of the three GO aspects is represented by a separate root term. GO defines several types of relationships between terms; in this work, particular attention is given to the is a relation, which represents subclass relationships and defines the basic hierarchical structure used by the method. Since a GO term may have more than one parent, several paths can connect a term to the corresponding root.
Throughout this work, we define the GO level of a term as the length of the shortest path composed exclusively of is a relationships connecting that term to the root of its corresponding GO aspect. Under this operational definition, larger GO levels generally correspond to more specific biological concepts.