The shortest path algorithm calculated the shortest (weighted) path between a pair of nodes by using Dijkstra's algorithm , which was executed in Neo4j with a fast bidirectional breadth-first search algorithm . The query searched for all shortest paths possible regardless of length, between a start identifier and all other identifiers given in the query array (biomarkers annotated with Wikidata); this process was repeated for all other identifiers in the query (Code Example 7 top). Last, the reactions were retrieved in a directed manner for the edges labeled ":AllInteractions". ChEBI or HMDB identifiers are first converted to the corresponding Wikidata identifier and then used to query for the shortest path (Code Example 7 bottom). The directed network was extended with proteins (interactions labeled with ':AllCatalysis'), by executing the shortest path calculation again with an undirected approach to find paths with enzyme nodes as a starting point.