TECHNICAL FIELD

This application relates generally to the curation and structure of stored data and efficient uses thereof.

BACKGROUND

Typically, information is stored in relational databases detailing relationships between multiple objects in a database. However, this information may be more efficiently stored in a bipartite graph structure.

SUMMARY

A description of a bipartite graph structure for efficiently storing data is disclosed herein. An example use of the bipartite graph structure is as a bipartite biochemical database for representing biochemical information, which is organized as a bipartite graph containing two categories of nodes: molecules and processes. Each molecule node represents a molecule, or chemical element that is utilized by one or more biochemical processes. A molecule node may represent small molecules such as water, carbon dioxide, protons, etc. or macromolecules such as DNA, RNA, and proteins. A molecule node contains a plurality of metadata fields describing the molecule including but not limited to a molecule name, a molecular formula, nucleic acid sequence, amino acid sequence, macromolecular structure, chemical modifications (such as methylation, phosphorylation etc.), electrical charge, chemical or physical properties (pKa, melting point, solubility etc.), and component molecules. Additionally, some non-physical properties may be included in the metadata for a molecule node including pathway information, drug interaction, 3D structures etc. A molecule node need not contain information for each one of the previously described metadata fields. Instead, each molecule is described using the fields that are pertinent to the molecule's interaction in a biochemical environment. For example, small molecules are best described by their chemical compositions and so the fields for nucleic acid sequence and macromolecular structure would not be applicable. On the other hand, a protein acting as an enzyme catalyst might contain information in the macromolecular structure, amino acid sequence, and binding site fields while not containing composition information as it may be variable or unimportant to the molecules function in a biochemical environment.

Process nodes describe molecular actions in a biochemical environment including but not limited to chemical reactions, regulatory interactions, binding, transport, or others. Like a molecule node, a process node includes a number of descriptive metadata fields that provide information about the process including but not limited to a list of molecules and their associated roles in the process, reaction rate information, and energy requirements for the process, sub-processes that may be involved in the process, or other more detailed information.

In addition to the molecule and process nodes, the biochemical database contains edges between the nodes that define the role of each molecule in each process and the stoichiometric coefficient assigned to that role. Each edge associates a molecule node with a process node thereby defining the bipartite structure of the database. Each edge also contains additional metadata characterizing the role of the associated molecule in the associated process. Any relevant characterization is possible including but not limited to reactant/substrate, catalyst, product, or cofactor.

The structure of the biochemical database lends itself to efficient methods for determining molecular interactions in a defined biochemical environment or determining a biochemical environment needed for a particular set of molecular interactions. For example, by selecting a set of molecule nodes that define a biochemical environment and traversing the bipartite graph, the set of biochemical interactions that are likely to occur in the biochemical environment can be determined. Alternatively, a set of desired process nodes can be selected and, by traversing the graph, the corresponding set of molecules that play a role in the selected set of processes can be determined. More generally, the biochemical database provides insights regarding the relationship between various processes and molecules in a biochemical environment. Additionally, because all edges in the bipartite graph connect a molecule node to a process node information retrieval for the purposes of biochemical simulation can be more efficiently accomplished by searching edges in the graph as opposed to searching through nodes in more disorganized graph structure. The bipartite nature of the graph can also be used to quickly identify “dead-end” molecules in a biochemical system. A dead-end molecule may be the product of a process while not being used as a substrate or catalyst in any other reaction, or it may be a substrate of a reaction while not being produced by any other process in the biochemical environment. After identifying dead-end molecules, additional research can be directed to determine how they may be produced or utilized in a biochemical environment. The bipartite graph structure may also be used to prune molecules and process from biochemical environment by traversing the graph from dead-end molecules and eliminating process and molecules that emanate from or contribute to dead-end molecules.

