OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-generate commits / b3534ae

Provide a README
b3534ae7f8fdf8eb1285f71b184e660fcfb21ad5
by Linas Vepstas <linasvepstas@gmail.com> · 2020-04-21T18:44:17.000Z

Changed files (1) +70 -0

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