G E N E R A T I V I T Y
An exploration of why and how things happen.
By PETER D’ADAMO, ND
Editor note: In the January 2019 issue of Townsend Letter, Dr. D’Adamo introduced readers to Datapunk Circuits (https://www.datapunk.net/circuits), an open-source, genomic database that allows the application of current knowledge about genetic polymorphisms in individualized patient care. Datapunk Circuits is part of The Center of Excellence in Generative Medicine at the University of Bridgeport College of Naturopathic Medicine in Connecticut. In this new column, Dr. D’Adamo will present the concepts and tools of generative medicine.
What Is This?
While medicine has no shortage of regenerative therapies and degenerative diseases, little examination of the actual generative processes driving their genesis and propagation has been systematically undertaken. A technical barrier exists, to a certain degree, as the analysis of most generative processes is heavily reliant on computational assistance. However, there is a plus side to this limitation. These same processes are, by this very nature, also computational accessible; and with the right tools, it is possible to query heretofore unimaginable quantities of patient data in ways that play to our greatest strength as a species: our unrivaled skill at pattern recognition.
Generativity is partially reflected in several traditional disciplines, including systems biology, bioinformatics, Big Data, and artificial intelligence. However, it is my opinion that with a bit of creative coding and a healthy dose of Vis Medicatrix Naturae vitalism, these standard tools of data analysis can provide the backbone to a metasystem of unique practical value to the clinician that I’ve termed Generative Medicine (GM).
Welcome to a new column that I hope will provide a guided tour through some of the most exciting and relevant concepts and tools in GM. Don’t worry, you’re not going to need to learn how to write code or solve differential equations. That’s what the technology is for. We’ll concentrate solely on needs, possibilities, and solutions.
Each column will be written in three parts. The first part will be an elaboration on various key concepts in GM. The second, a discussion of how these concepts can be utilized to produce a computationally active device or tool. The third will be a tour of the tool itself.
Pathways vs. Networks
There are no such things as pathways. There are only networks. Although we’ve all spent many an hour learning various pathways, it turns out that they are not all that reflective of the actual mechanics of the complex systems they attempt to typify. A possible byline for most pathway representations could be ‘don’t just do something, stand there.’ Networks, on the other hand, have an embedded relational structure. You can ride them, flip them, and even ask them which of their members is the prettiest or most popular, given its current status (also known as its state space.) For all its magical properties, networks are actually very simple constructs, typically produced by things and the various relationships between things, usually specified as a series of binary (one-to-one) relationships.
Things in networks are usually called nodes (or sometimes by their older name, vertex) and relationships are called edges. Edges connect nodes in some meaningful manner, much like verbs connect nouns in simple sentences. Graphs can be directed (the edges have a direction) or undirected (they don’t). Since life does not function well with uncertainty, networks in living systems are always directed. Let’s take a look at a simple three node network, as shown below:
Our network has three nodes (X, Y and Z), and they are connected by three edges ( XY, YZ, XZ). Z is the star of the show and requires stimuli from both X and Y to activate (this is known in logic as an AND condition.) Edges XY and XZ are stimulatory, while edge YZ is inhibitory. Now let’s add the tincture of time to this little web. We can see that edge XZ is a direct connection and will thus probably cause node Z to fire very quickly after X activates, whereas the stimulation from edge YZ, which must wait for the activation of node Y from node X (by edge XY) to occur, will lag somewhat behind. So initially node Z activates, but sometime afterwards Y also triggers and its edge YZ fires which then suppresses node Z. As each node cycles between charging-up and releasing states, the circuit causes node Z to pulse on-off-on repeatedly.
Our little network is actually a well-recognized systems biology motif and is somewhat inelegantly titled an incoherent feed-forward loop (IFFL). The loop is ‘incoherent’ because two dissimilar impulses, stimulatory ( XZ) and inhibitory ( YZ) arrive at the trigger node (Z). An example of a pulsating gene regulatory circuit triggered by an IFFL is TP53, a tumor suppressor gene and so-called ‘guardian of the genome.’
The coherent feed-forward loop (CFFL) where the same type of signal occurs at the trigger node, does something quite different. Cellular circuits are inherently noisy due to fluctuations in viscosity, temperature, and probably a thousand other factors. The CFFL smooths out signals by filtering out jibber-jabber at X and Y so that the Z has only two states: high (on) or low (off). Another example of life eschewing uncertainty. Change edge YZ from inhibitory to stimulatory, add some tincture of time, and see if you can visualize in your minds how this might occur.
Networks fall under the mathematical category of graph theory. Most of us probably think of ‘graphs’ as an X axis-Y axis two-dimensional scree plot, but those are actually ‘Cartesian Coordinates.’ Graph theory was (more or less) invented by the mathematician Leonhard Euler as a way of solving ‘The Seven Bridges of Königsberg’ problem. This city was set on both sides of a river and included two large islands that were connected to each other, or to the two mainland portions of the city, by seven bridges. The challenge was to devise a walk through the city that would cross each of those bridges once and only once. Euler was able to show that it could not be done, while incidentally laying the groundwork for what is now topology, the study of the interconnected pattern of network elements. If you’d like to learn more about network motifs, Uri Alon’s An Introduction to Systems Biology: Design Principles of Biological Circuits(Chapman & Hall/CRC Mathematical and Computational Biology) is an enjoyable read.
The Indirect Approach
Let’s move from our very simple network to one much more extensive and intricate, the web of protein-protein interactions (PPI). PPIs are the lifeblood of biochemical cascades and the molecular etiology of disease, as well as the source of many protein targets of therapeutic interest. There is no shortage of published PPI data, and we’ll use the data available from STRING (https://string-db.org/). After judicious data scrubbing, our PPI data file is comprised of entries that are surprisingly simple. Below are just a few lines from the data file which actually lists over 32,000 individual PPIs.
Each line contains three pieces of data, separated by the ‘tab’ character: the ‘from’ protein node, the ‘to’ protein node and (for the disbelievers) the PubMed PMID documenting the link.
With these two nodes provided, their edge is implied. All we’ll need to do to build our network is loop through the file, chop up the three pieces of data into independent variables, and store them somewhere. Since we’re working in the Perl web scripting language, we’ll be using a well-documented Perl code library known (unsurprisingly) as ‘Graph’. As we loop through and chop up the data, we’ll store its variables in Graph, which will then structure the data into a web-like network.
Once in Graph, we can perform some serious magic on the data. For example, from here we can interrogate Graph to supply us with the successors or predecessors for any given protein. Think of this from a functional standpoint: if we can identify the predecessor proteins in a disease cascade, we can engineer solutions that vivify compromised proteins or block dysregulated ones, a gambit that military strategists refer to as ‘the indirect approach.’
Graph can also help us identify other juicy targets of opportunity such as highly connected nodes, colloquially known as ‘hubs,’ that sit at crossroads in the network and whose modulation affords a greater opportunity of widespread effect. We can also identify ‘disease neighborhoods’ in the network (known as subgraphs) that characteristically form a repeating pattern of dysfunction, much like how during a blackout, some towns will lose electricity whilst others will be untouched, depending on their place in the electrical grid.
Psychic is one of the prescriptive apps bundled with my Opus23 software that normally runs on patient genomic data. We’ll be using an open-source version of Psychic created for this column that will run generically. To fire it up, point your browser to https://www.datapunk.net/tlfd/psychic/.
Psychic allows you to search for natural products known to control gene expression. However, unlike a simple search engine, Psychic is able to crawl up and down the molecular ‘interactome’ to determine the upstream and downstream genes that interact with the gene you’ve searched for. In addition, you can choose how natural products (agonists/ antagonists) are included in the upstream and downstream results. Figure 1, below, shows the basic screen.
By default, Psychic shows the interactome profile for the gene/protein MTOR, since it has to show something. The main infographic is comprised of a bar graph divided into two halves. The left half displays the ‘upstream’ results, while the right half displays the ‘downstream’ results, based on MTOR’s position in the interactome. The labels along the x-axis display the various natural products and their gene targets Psychic has found that meet the search criteria. The y-axis value of each bar in the graph is determined by the evidence basis and strength of the position in the network for the gene depicted.
You can set filters on each half of the graph to limit results to a specific type (agonism or antagonism) by selecting an option from the pull-down menu below. There are four options:
• Inhibit/ Drain: This will tell Psychic to return all upstream antagonists and downstream agonists.
• Inhibit/ Bottleneck: This will tell Psychic to return all upstream antagonists and downstream antagonists.
• Stimulate/Drain: This will tell Psychic to return all upstream agonists and downstream agonists.
• Stimulate/ Bottleneck: This will tell Psychic to return all upstream agonists and downstream antagonists.
To select a gene/protein to run in Psychic, simply begin typing in its gene symbol in the text input field; Psychic will auto-complete the entry with any genes for which it has data. If multiple options are displayed, simply select the gene you wish to analyze. When you’re ready, press the ‘Run Psychic’ button to have Psychic run results. Click on any bar to trigger a popup screen that will provide information on that natural product (see example Figure 2). Clicking any gene in the popup radar plot will load that gene into Psychic.
Well, there you have it, my first TL column. I hope it proved helpful. Feel free to email me (firstname.lastname@example.org) with comments, questions, and suggestions. Next time we’ll investigate microbiome interaction networks and how the use of high-value targeted prebiotics, foods, and herbs might be used to demonstrate the old aphorism that the enemy of my enemy may in fact be my friend.
Peter D’Adamo is a distinguished professor of clinical medicine at the University of Bridgeport School of Naturopathic Medicine. His New York Times bestselling books have sold over 8 million copies and have been translated into over 75 languages. He is the developer of the acclaimed Opus23genomic software suite and a variety of other generative apps that can be explored at www.datapunk.net and www.opus23.com. In his spare time, he brings old VW Beetles back to life at his garage on www.kdf20.com.