Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,179 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import numpy as np
|
3 |
+
from scipy.sparse import csr_matrix
|
4 |
+
import pandas as pd
|
5 |
+
import time
|
6 |
+
import graphviz
|
7 |
+
|
8 |
+
# -----------------------------------------------------------------------------
|
9 |
+
# Title and Overview
|
10 |
+
# -----------------------------------------------------------------------------
|
11 |
+
st.title("Cortical Column Theory: Self-Modifying Memory Systems")
|
12 |
+
st.markdown("""
|
13 |
+
**Theory Overview:**
|
14 |
+
This application demonstrates a model inspired by Cortical Column Theory where the ability to self-modify is paramount.
|
15 |
+
- **Episodic Memory (E):** Represents short-term, conscious experience (~5–10 seconds) via introspective attention.
|
16 |
+
- **Semantic Memory (K):** Cumulative knowledge built over time (Mass + Agency), enabling free energy formation.
|
17 |
+
- **Neural Connectivity:** Modeled via sparse matrices to mimic voting neurons in cortical columns.
|
18 |
+
- **Social Bonding:** Hierarchical connections—from teams to humanity—facilitate maximum free energy (or ‘love’) at a cellular level.
|
19 |
+
|
20 |
+
These components interact in a dynamic system, much like how neocortical columns steer signals via voting neurons and dendritic excitement.
|
21 |
+
""")
|
22 |
+
|
23 |
+
# -----------------------------------------------------------------------------
|
24 |
+
# Create Tabs for Organized UI Sections
|
25 |
+
# -----------------------------------------------------------------------------
|
26 |
+
tabs = st.tabs([
|
27 |
+
"Theory",
|
28 |
+
"Neural Connectivity",
|
29 |
+
"Concept Graph",
|
30 |
+
"Interactive Components",
|
31 |
+
"NPS Score",
|
32 |
+
"Extra UI"
|
33 |
+
])
|
34 |
+
|
35 |
+
# -----------------------------------------------------------------------------
|
36 |
+
# Tab 1: Theory Explanation
|
37 |
+
# -----------------------------------------------------------------------------
|
38 |
+
with tabs[0]:
|
39 |
+
st.header("Cortical Column Theory")
|
40 |
+
st.write("""
|
41 |
+
The central hypothesis is that life’s essential characteristic is its ability to self-modify.
|
42 |
+
In this model:
|
43 |
+
|
44 |
+
- **Episodic Memory (E)** functions as immediate, introspective attention over a 5–10 second window.
|
45 |
+
- **Semantic Memory (K)** aggregates past experiences into a knowledge base, growing as new connections (graph edges) form.
|
46 |
+
- **Free Energy** is produced as the system scales its pair bonds—from simple interactions (e.g., between two neurons) to complex networks (teams, organizations, and ultimately humanity).
|
47 |
+
- **Love (❤️)** is conceptualized as the maximal connection, representing the highest free energy state and optimal bond formation.
|
48 |
+
|
49 |
+
This theoretical framework abstracts how biological neural circuits might mirror self-coding systems in AI.
|
50 |
+
""")
|
51 |
+
|
52 |
+
# -----------------------------------------------------------------------------
|
53 |
+
# Tab 2: Neural Connectivity with Sparse Matrix
|
54 |
+
# -----------------------------------------------------------------------------
|
55 |
+
with tabs[1]:
|
56 |
+
st.header("Neural Connectivity Sparse Matrix")
|
57 |
+
st.write("Below is a demonstration of a sparse matrix simulating neural connectivity within a cortical column:")
|
58 |
+
|
59 |
+
# Create a random binary matrix (10 neurons, ~20% connectivity)
|
60 |
+
size = 10
|
61 |
+
density = 0.2
|
62 |
+
random_matrix = np.random.binomial(1, density, size=(size, size))
|
63 |
+
sparse_matrix = csr_matrix(random_matrix)
|
64 |
+
|
65 |
+
st.write("Sparse Matrix Representation:")
|
66 |
+
st.write(sparse_matrix)
|
67 |
+
st.write("Dense Matrix Representation:")
|
68 |
+
st.write(random_matrix)
|
69 |
+
|
70 |
+
# -----------------------------------------------------------------------------
|
71 |
+
# Tab 3: Emoji and Concept Graph UI
|
72 |
+
# -----------------------------------------------------------------------------
|
73 |
+
with tabs[2]:
|
74 |
+
st.header("Emoji and Concept Graph")
|
75 |
+
st.write("Visualizing core concepts with emojis where each node represents a key component of the theory:")
|
76 |
+
|
77 |
+
# Graphviz diagram using emojis and labels for key concepts.
|
78 |
+
graph_source = """
|
79 |
+
digraph G {
|
80 |
+
"Cortical Column 🧠" -> "Episodic Memory (E) ⏱️" [label="short-term"];
|
81 |
+
"Cortical Column 🧠" -> "Semantic Memory (K) 📚" [label="knowledge"];
|
82 |
+
"Episodic Memory (E) ⏱️" -> "Introspective Attention 🔍" [label="focus"];
|
83 |
+
"Semantic Memory (K) 📚" -> "Free Energy ⚡" [label="agency"];
|
84 |
+
"Free Energy ⚡" -> "Love ❤️" [label="bond"];
|
85 |
+
"Love ❤️" -> "Humanity 🌍" [label="connection"];
|
86 |
+
}
|
87 |
+
"""
|
88 |
+
st.graphviz_chart(graph_source)
|
89 |
+
|
90 |
+
# -----------------------------------------------------------------------------
|
91 |
+
# Tab 4: Interactive UI Components
|
92 |
+
# -----------------------------------------------------------------------------
|
93 |
+
with tabs[3]:
|
94 |
+
st.header("Interactive Components Demonstration")
|
95 |
+
|
96 |
+
st.subheader("Input and Selection")
|
97 |
+
concept_input = st.text_input("Enter a concept label:", "Cortical Column Theory")
|
98 |
+
time_window = st.slider("Select attention window (seconds)", 1, 10, 5)
|
99 |
+
memory_type = st.radio("Select memory type", ("Episodic (E)", "Semantic (K)"))
|
100 |
+
neural_component = st.selectbox("Choose a neural component", ["Neuron", "Synapse", "Dendrite", "Axon"])
|
101 |
+
additional_components = st.multiselect("Select additional components", ["Free Energy", "Agency", "Mass", "Bond"])
|
102 |
+
|
103 |
+
st.subheader("Activation Controls")
|
104 |
+
if st.checkbox("Activate Introspective Attention"):
|
105 |
+
st.write("Introspective Attention Activated!")
|
106 |
+
|
107 |
+
if st.button("Execute Self-Modification Cycle"):
|
108 |
+
st.write("**Self-Modification Cycle Executed**")
|
109 |
+
st.write(f"Memory Type Selected: {memory_type}")
|
110 |
+
st.write(f"Attention Window: {time_window} seconds")
|
111 |
+
st.write(f"Neural Component: {neural_component}")
|
112 |
+
st.write(f"Additional Components: {additional_components}")
|
113 |
+
|
114 |
+
st.subheader("Media Components")
|
115 |
+
st.image("https://via.placeholder.com/150.png?text=Neural+Network", caption="Neural Network Representation")
|
116 |
+
# Note: The video below is a placeholder.
|
117 |
+
st.video("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
|
118 |
+
|
119 |
+
st.subheader("Data and JSON Display")
|
120 |
+
df = pd.DataFrame({
|
121 |
+
"Component": ["Neuron", "Synapse", "Dendrite", "Axon"],
|
122 |
+
"Status": ["Active", "Active", "Inactive", "Active"]
|
123 |
+
})
|
124 |
+
st.dataframe(df)
|
125 |
+
sample_json = {
|
126 |
+
"Episodic": {"Duration": f"{time_window} sec", "Type": memory_type},
|
127 |
+
"Semantic": {"Label": concept_input}
|
128 |
+
}
|
129 |
+
st.json(sample_json)
|
130 |
+
|
131 |
+
st.subheader("File Upload and Color Picker")
|
132 |
+
uploaded_file = st.file_uploader("Upload a configuration file")
|
133 |
+
color = st.color_picker("Pick a highlight color", "#00f900")
|
134 |
+
st.write("Selected Color:", color)
|
135 |
+
|
136 |
+
st.subheader("Date and Time Inputs")
|
137 |
+
date_input = st.date_input("Select a date")
|
138 |
+
time_input = st.time_input("Select a time")
|
139 |
+
st.write("Date:", date_input, "Time:", time_input)
|
140 |
+
|
141 |
+
st.subheader("Progress Bar Simulation")
|
142 |
+
progress_bar = st.progress(0)
|
143 |
+
for percent_complete in range(101):
|
144 |
+
progress_bar.progress(percent_complete)
|
145 |
+
time.sleep(0.01)
|
146 |
+
|
147 |
+
st.subheader("Metrics and Download Button")
|
148 |
+
st.metric(label="Introspective Score", value=time_window*10, delta="+5")
|
149 |
+
st.download_button("Download Configuration", data="configuration data", file_name="config.txt")
|
150 |
+
|
151 |
+
# -----------------------------------------------------------------------------
|
152 |
+
# Tab 5: Self Reward Learning NPS Score
|
153 |
+
# -----------------------------------------------------------------------------
|
154 |
+
with tabs[4]:
|
155 |
+
st.header("Self Reward Learning NPS Score")
|
156 |
+
nps_score = st.slider("Rate Self Reward Learning (0-10):", 0, 10, 5)
|
157 |
+
if nps_score <= 6:
|
158 |
+
nps_comment = "Needs Improvement - Consider refining self-modification algorithms."
|
159 |
+
elif nps_score <= 8:
|
160 |
+
nps_comment = "Good, but can be better - Fine-tuning required."
|
161 |
+
else:
|
162 |
+
nps_comment = "Excellent! - The system demonstrates robust self-reward learning."
|
163 |
+
st.write(f"**NPS Score:** {nps_score} - {nps_comment}")
|
164 |
+
|
165 |
+
# -----------------------------------------------------------------------------
|
166 |
+
# Tab 6: Extra UI Components for Extended Demonstration
|
167 |
+
# -----------------------------------------------------------------------------
|
168 |
+
with tabs[5]:
|
169 |
+
st.header("Extra UI Components")
|
170 |
+
with st.expander("More Details"):
|
171 |
+
st.write("Additional explanations or interactive widgets can be added here.")
|
172 |
+
|
173 |
+
col1, col2 = st.columns(2)
|
174 |
+
with col1:
|
175 |
+
st.write("**Column 1:** Additional metrics or charts.")
|
176 |
+
st.line_chart(np.random.randn(20, 1))
|
177 |
+
with col2:
|
178 |
+
st.write("**Column 2:** Other interactive elements.")
|
179 |
+
st.bar_chart(np.random.randn(20, 1))
|