awacke1 commited on
Commit
68599bb
·
verified ·
1 Parent(s): 7791160

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -16
app.py CHANGED
@@ -1,21 +1,45 @@
1
  import streamlit as st
2
  import matplotlib.pyplot as plt
3
  import numpy as np
 
4
 
5
- # Define golden_ratio as a global constant
6
  golden_ratio = (1 + np.sqrt(5)) / 2
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  def generate_colored_circle_template(num_circles):
9
  fig, ax = plt.subplots(figsize=(6, 6))
10
  ax.set_xlim(0, 1)
11
  ax.set_ylim(0, 1)
12
  ax.axis('off')
13
 
14
- for _ in range(num_circles):
15
  radius = np.random.uniform(0.05, 0.15)
16
  center = (np.random.uniform(radius, 1-radius), np.random.uniform(radius, 1-radius))
17
- color = np.random.rand(3,)
18
- circle = plt.Circle(center, radius, color=color, alpha=0.8)
 
 
19
  ax.add_artist(circle)
20
  return fig
21
 
@@ -49,14 +73,6 @@ def generate_fibonacci_spiral_layout(num_points):
49
  ax.set_aspect('equal')
50
  return fig
51
 
52
- def is_prime(n):
53
- if n <= 1:
54
- return False
55
- for i in range(2, int(n**0.5) + 1):
56
- if n % i == 0:
57
- return False
58
- return True
59
-
60
  def generate_prime_number_spiral(num_points):
61
  fig, ax = plt.subplots(figsize=(6, 6))
62
  ax.axis('off')
@@ -72,12 +88,29 @@ def generate_prime_number_spiral(num_points):
72
  ax.set_aspect('equal')
73
  return fig
74
 
75
- # Streamlit UI
76
- st.title("Circle Packings Visualization")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
 
78
  mode = st.radio(
79
  "Choose a visualization mode:",
80
- ("Random Circle Packings", "Symmetrical Circle Layouts", "Fibonacci Spiral Layout", "Prime Number Spiral")
81
  )
82
 
83
  if mode == "Random Circle Packings":
@@ -92,5 +125,12 @@ elif mode == "Fibonacci Spiral Layout":
92
  elif mode == "Prime Number Spiral":
93
  num_points = st.slider("Number of Points", 10, 1000, 200)
94
  fig = generate_prime_number_spiral(num_points)
 
 
 
 
 
 
95
 
96
- st.pyplot(fig)
 
 
1
  import streamlit as st
2
  import matplotlib.pyplot as plt
3
  import numpy as np
4
+ import matplotlib.colors as mcolors
5
 
6
+ # Global constant for golden ratio
7
  golden_ratio = (1 + np.sqrt(5)) / 2
8
 
9
+ def is_prime(n):
10
+ """Check if a number is prime."""
11
+ if n <= 1:
12
+ return False
13
+ for i in range(2, int(n**0.5) + 1):
14
+ if n % i == 0:
15
+ return False
16
+ return True
17
+
18
+ def fib_sequence(n):
19
+ """Generate Fibonacci sequence up to n."""
20
+ fib_seq = [0, 1]
21
+ while fib_seq[-1] + fib_seq[-2] <= n:
22
+ fib_seq.append(fib_seq[-1] + fib_seq[-2])
23
+ return fib_seq[2:] # Exclude first two numbers for this use case
24
+
25
+ def adjust_color_brightness(color, factor):
26
+ """Darken a color by a given factor."""
27
+ color = np.array(mcolors.to_rgb(color)) * factor
28
+ return tuple(color)
29
+
30
  def generate_colored_circle_template(num_circles):
31
  fig, ax = plt.subplots(figsize=(6, 6))
32
  ax.set_xlim(0, 1)
33
  ax.set_ylim(0, 1)
34
  ax.axis('off')
35
 
36
+ for i in range(num_circles):
37
  radius = np.random.uniform(0.05, 0.15)
38
  center = (np.random.uniform(radius, 1-radius), np.random.uniform(radius, 1-radius))
39
+ base_color = np.random.rand(3,)
40
+ darker_color = adjust_color_brightness(base_color, 0.5)
41
+ color_variation = base_color * (0.95 + 0.1 * np.random.rand()) # Slight color variation
42
+ circle = plt.Circle(center, radius, color=color_variation, ec=darker_color, lw=1, alpha=0.5)
43
  ax.add_artist(circle)
44
  return fig
45
 
 
73
  ax.set_aspect('equal')
74
  return fig
75
 
 
 
 
 
 
 
 
 
76
  def generate_prime_number_spiral(num_points):
77
  fig, ax = plt.subplots(figsize=(6, 6))
78
  ax.axis('off')
 
88
  ax.set_aspect('equal')
89
  return fig
90
 
91
+ def emoji_dynamics_and_number_theory_simulation(size):
92
+ fib_seq = fib_sequence(size**2)
93
+ grid = []
94
+
95
+ for i in range(1, size**2 + 1):
96
+ if i in fib_seq:
97
+ grid.append("🌀") # Fibonacci positions
98
+ elif is_prime(i):
99
+ grid.append("🌟") # Prime positions
100
+ else:
101
+ grid.append("⚪") # Other positions
102
+
103
+ if i % size == 0:
104
+ grid.append("\n") # Newline at the end of each row
105
+
106
+ return "".join(grid)
107
+
108
+ # Streamlit UI setup
109
+ st.title("Circle Packings and Number Theory Visualizations")
110
 
111
  mode = st.radio(
112
  "Choose a visualization mode:",
113
+ ("Random Circle Packings", "Symmetrical Circle Layouts", "Fibonacci Spiral Layout", "Prime Number Spiral", "Emoji Dynamics and Number Theory Simulation")
114
  )
115
 
116
  if mode == "Random Circle Packings":
 
125
  elif mode == "Prime Number Spiral":
126
  num_points = st.slider("Number of Points", 10, 1000, 200)
127
  fig = generate_prime_number_spiral(num_points)
128
+ elif mode == "Emoji Dynamics and Number Theory Simulation":
129
+ size = st.slider("Grid Size", 5, 20, 10)
130
+ simulation = emoji_dynamics_and_number_theory_simulation(size)
131
+ st.text(simulation)
132
+ else:
133
+ st.text("Select a visualization mode to display.")
134
 
135
+ if 'fig' in locals():
136
+ st.pyplot(fig)