| … | … | @@ -0,0 +1,70 @@ |
| 1 | |
| 2 | Covid-19 Demo |
| 3 | -------------- |
| 4 | Demo of a random social network with a SEIR Covid-19 simulation. |
| 5 | |
| 6 | SEIR == "susceptible", "exposed", "infected", and "recovered". |
| 7 | |
| 8 | This is a demo, only! It is demonstrating several different AtomSpace |
| 9 | programming techniques, one of which is the brand-new (version 0.1) |
| 10 | random network generator. Another is Value Flows: the use of Values |
| 11 | for holding mutable state, and flowing that state through a network. |
| 12 | It is assumed that the reader is already familiar with the basics of |
| 13 | the OpenCog AtomSpace! This demo *could* be enhanced to do actual |
| 14 | scientific exploration; see "making this useful", below. |
| 15 | |
| 16 | This demo generates a random "social network", consisting of two types |
| 17 | of relationships: "friends" and "strangers". It adopts a simple SEIR |
| 18 | model of disease transmission and progression along this network. |
| 19 | The model itself is a (simple) hand-coded state-transition machine. |
| 20 | |
| 21 | Making this Useful |
| 22 | ------------------ |
| 23 | This is a demo, not a final finished product. |
| 24 | |
| 25 | There's no whizzy visualization of the disease progression, or the |
| 26 | resulting stats. You can visualize snapshots of the network with |
| 27 | CytoScape or Gephi, but it won't be animated as the disease spreads. |
| 28 | |
| 29 | There's no statistical analysis performed, and no graphs or curves are |
| 30 | drawn. The demo shows how to generate the raw data, not how to analyze |
| 31 | raw data. |
| 32 | |
| 33 | Altering the disease progression model is not particularly easy. It is |
| 34 | written in Atomese, which is rather verbose, and programming in |
| 35 | Atomese is, in many ways, like programming in assembly code. This is |
| 36 | perhaps the most important thing to understand about this demo. |
| 37 | Atomese is a graphical programming language, and it was designed for |
| 38 | automation. This means that the graphs, and the Atomese code, is meant |
| 39 | to be easy for other algorithms to manipulate. It's designed for other |
| 40 | machines, not for humans :-! |
| 41 | |
| 42 | Consider, for example, a graphical editor - something where you can |
| 43 | drag-n-drop, hand-draw interacting bubble diagrams. Something easy |
| 44 | to use - something a medical professional could get the hang of in |
| 45 | half an hour - something where a disease model could be sketched out |
| 46 | with bubbles and lines and flow-charts. The goal of Atomese is that |
| 47 | it becomes easy -- really easy -- to convert such diagrams into |
| 48 | executable code. That's what Atomese is designed to do. |
| 49 | |
| 50 | Another possibility is that of an automatic model explorer: a system |
| 51 | that automatically creates a variety of different models, and then |
| 52 | explores how well each model works. The automatic generator could, |
| 53 | for example, mutate the best models and see if even better-fitting |
| 54 | models can be obtained, searching for a best-fit. The goal of Atomese |
| 55 | is that it becomes very easy for such models to be generated and run. |
| 56 | The verboseness of Atomese is no longer a problem; the simple |
| 57 | programming language it implements is easy for other tools to |
| 58 | manipulate and control. That's what it's good for. |
| 59 | |
| 60 | Thus, in reading the below, keep in mind that there is nothing special |
| 61 | about the SEIR model; its a stand-in for what could be a generic, |
| 62 | arbitrary state transition machine. Such machines can be hand-coded, |
| 63 | of course, but the interesting application is when they are generated |
| 64 | from other sources. |
| 65 | |
| 66 | Last but not least: keep in mind that the network generator is |
| 67 | currently at version 0.1, and is not yet as versatile, flexible and |
| 68 | powerful as it could be. The parameter settings below generate |
| 69 | networks that are long and thin. One such network can be seen in |
| 70 | the included image. |