2catycm commited on
Commit
0bd37cc
·
1 Parent(s): 1a2a3ad

初步结果

Browse files
pages/__pycache__/page1.cpython-311.pyc CHANGED
Binary files a/pages/__pycache__/page1.cpython-311.pyc and b/pages/__pycache__/page1.cpython-311.pyc differ
 
pages/page1.py CHANGED
@@ -15,18 +15,49 @@ from utils.hypergraph_drawer import draw_hypergraph
15
  def main():
16
  st.title("NIPS 论文数据集高斯混合聚类分析")
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  # 使用 sidebar 控制参数
19
  with st.sidebar:
20
  st.header("控制面板")
21
- autoplay = st.button("自动播放")
22
- if autoplay:
23
- for i in range(1, 11):
24
- with st.spinner(f"迭代 {i}"):
25
- time.sleep(1)
26
- st.session_state.iteration = i
27
- st.session_state.autoplay = False
28
- st.experimental_rerun()
29
 
 
30
  # 添加复选框选择显示 paper 的属性
31
  display_attribute = st.selectbox(
32
  "选择显示 paper 的属性",
@@ -39,37 +70,22 @@ def main():
39
  )
40
  # Top K Clusters
41
  if display_option == "Top K Clusters":
42
- top_k = st.slider("选择 K 值", min_value=1, max_value=10, value=3, step=1)
 
43
  top_p = None
44
  else:
45
  top_k = None
46
  top_p = st.slider("选择 P 值", min_value=0.0, max_value=1.0, value=0.5, step=0.01)
47
 
48
- # 主页面布局
49
- if 'autoplay' not in st.session_state:
50
- st.session_state.autoplay = True
51
-
52
- if 'iteration' not in st.session_state:
53
- st.session_state.iteration = 1
54
 
55
- if st.session_state.autoplay:
56
- # 隐藏迭代次数滑条
57
- iteration = st.session_state.iteration
58
- else:
59
- # 显示迭代次数滑条
60
- iteration = st.slider("选择迭代次数", min_value=1, max_value=10, value=st.session_state.iteration, step=1)
61
 
62
- # 动态限制采样数量的最大值
63
- df = load_data()
64
- max_samples = len(df)
65
- num_samples = st.slider("选择采样论文数量", min_value=1, max_value=min(100, max_samples), value=min(10, max_samples), step=1)
66
-
67
- # 处理数据
68
- sampled_df, probabilities, paper_attributes = process_data(df, iteration, num_samples)
69
- # print(display_attribute) # 字符串
70
- hyperedges = build_hyperedges(probabilities, paper_attributes, display_attribute, top_k=top_k, top_p=top_p)
71
- # print(hyperedges)
72
 
 
73
  # 并排展示超图和高斯混合分布
74
  col1, col2 = st.columns(2)
75
  with col1:
@@ -89,4 +105,34 @@ def main():
89
  # 增加第二种可视化方式
90
  st.header("论文评分分布")
91
  fig_bar = visualize_ratings(sampled_df)
92
- st.plotly_chart(fig_bar, use_container_width=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  def main():
16
  st.title("NIPS 论文数据集高斯混合聚类分析")
17
 
18
+ # 自动播放
19
+ slider_max = 10
20
+ if 'play_state' not in st.session_state:
21
+ st.session_state.play_state = False
22
+ if 'iteration' not in st.session_state:
23
+ st.session_state.iteration = 0
24
+ # 定义回调函数来切换播放状态
25
+ def toggle_play():
26
+ if not st.session_state.play_state and st.session_state.iteration == slider_max:
27
+ st.session_state.iteration = 0 # 重置迭代次数
28
+ st.session_state.play_state = not st.session_state.play_state
29
+
30
+ # 创建播放/暂停按钮
31
+ if st.session_state.play_state:
32
+ button_label = "暂停"
33
+ else:
34
+ button_label = "播放"
35
+ st.button(button_label, on_click=toggle_play, key="play_button")
36
+ # 播放速度
37
+ speed = st.slider("播放速度", min_value=0.1, max_value=2.0, value=1.0, step=0.1, key="speed_slider")
38
+ # 主页面布局
39
+
40
+ # 显示迭代次数滑条
41
+ iteration = st.slider("迭代步骤", min_value=1, max_value=slider_max,
42
+ value=st.session_state.iteration, step=1,
43
+ key="iteration_slider")
44
+ # st.write(f"当前迭代次数: {iteration}")
45
+ # print(st.session_state.iteration)
46
+
47
+
48
+ # 动态限制采样数量的最大值
49
+ df = load_data()
50
+
51
+
52
  # 使用 sidebar 控制参数
53
  with st.sidebar:
54
  st.header("控制面板")
55
+ max_samples = len(df)
56
+ num_samples = st.slider("选择采样论文数量", min_value=1,
57
+ max_value=min(100, max_samples), value=min(10, max_samples), step=1)
58
+
 
 
 
 
59
 
60
+
61
  # 添加复选框选择显示 paper 的属性
62
  display_attribute = st.selectbox(
63
  "选择显示 paper 的属性",
 
70
  )
71
  # Top K Clusters
72
  if display_option == "Top K Clusters":
73
+ max_k = 5
74
+ top_k = st.slider("选择 K 值", min_value=1, max_value=max_k, value=3, step=1)
75
  top_p = None
76
  else:
77
  top_k = None
78
  top_p = st.slider("选择 P 值", min_value=0.0, max_value=1.0, value=0.5, step=0.01)
79
 
80
+ # 处理数据
81
+ sampled_df, probabilities, paper_attributes = process_data(df, iteration, num_samples)
82
+ # print(display_attribute) # 字符串
83
+ hyperedges = build_hyperedges(probabilities, paper_attributes, display_attribute, top_k=top_k, top_p=top_p)
84
+ # print(hyperedges)
 
85
 
 
 
 
 
 
 
86
 
 
 
 
 
 
 
 
 
 
 
87
 
88
+
89
  # 并排展示超图和高斯混合分布
90
  col1, col2 = st.columns(2)
91
  with col1:
 
105
  # 增加第二种可视化方式
106
  st.header("论文评分分布")
107
  fig_bar = visualize_ratings(sampled_df)
108
+ st.plotly_chart(fig_bar, use_container_width=True)
109
+
110
+
111
+
112
+ # 自动播放功能
113
+ # print(st.session_state.play_state)
114
+ if st.session_state.play_state:
115
+ # 使用空容器来显示进度
116
+ progress_container = st.empty()
117
+
118
+ with st.spinner("正在播放..."):
119
+ if st.session_state.iteration < slider_max:
120
+ # 增加滑动条值
121
+ st.session_state.iteration += 1
122
+ st.write(f"当前迭代次数: {st.session_state.iteration}")
123
+ # print(st.session_state.iteration)
124
+ # 等待一小段时间模拟滑动过程
125
+ time.sleep(1/speed) # 根据速度调整等待时间
126
+ # 使用rerun来更新页面
127
+ st.rerun()
128
+ else:
129
+ # 到达最大值时停止播放
130
+ st.session_state.play_state = False
131
+
132
+
133
+
134
+ if __name__ == "__main__":
135
+ # 设置页面布局
136
+ st.set_page_config(layout="wide")
137
+ # 运行主函数
138
+ main()
pages/test.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import time
3
+
4
+ # 初始化会话状态
5
+ if "slider_value" not in st.session_state:
6
+ st.session_state.slider_value = 0
7
+ if "play_state" not in st.session_state:
8
+ st.session_state.play_state = False
9
+
10
+ # 定义回调函数
11
+ def toggle_play():
12
+ st.session_state.play_state = not st.session_state.play_state
13
+ if st.session_state.play_state:
14
+ st.session_state.slider_value = st.session_state.slider
15
+
16
+ # 创建播放/暂停按钮
17
+ button_label = "暂停" if st.session_state.play_state else "播放"
18
+ st.button(button_label, on_click=toggle_play)
19
+
20
+ # 创建滑动条,使用key参数将其与会话状态关联
21
+ slider_max = 10
22
+ slider = st.slider("进度", 0, slider_max, st.session_state.slider_value, key="slider")
23
+
24
+ # 显示当前值
25
+ st.write(f"当前值: {slider}")
26
+
27
+ # 如果处于播放状态,自动增加滑动条的值
28
+ if st.session_state.play_state:
29
+ # 使用空容器来显示进度
30
+ progress_container = st.empty()
31
+
32
+ with st.spinner("正在播放..."):
33
+ if st.session_state.slider_value < slider_max:
34
+ # 增加滑动条值
35
+ st.session_state.slider_value += 1
36
+ # 等待一小段时间模拟滑动过程
37
+ time.sleep(0.1)
38
+ # 使用rerun来更新页面
39
+ st.rerun()
40
+ else:
41
+ # 到达最大值时停止播放
42
+ st.session_state.play_state = False
requirements.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ numpy>=1.21.0
2
+ pandas>=1.3.0
3
+ plotly>=6.0.0
4
+ scipy>=1.7.0
5
+ torch>=1.9.0
6
+ scikit-learn>=1.0.0
7
+ ipython>=8.0.0
8
+ ipywidgets>=7.0.0
9
+ nbformat>=5.0.0
10
+ sympy>=1.8
11
+ git+https://github.com/2catycm/pykan.git
12
+ matplotlib
utils/__pycache__/data_processor.cpython-311.pyc CHANGED
Binary files a/utils/__pycache__/data_processor.cpython-311.pyc and b/utils/__pycache__/data_processor.cpython-311.pyc differ
 
utils/data_processor.py CHANGED
@@ -42,7 +42,8 @@ def build_hyperedges(
42
  for idx, (prob, paper_attr) in enumerate(zip(probabilities, paper_attributes)):
43
  if display_attribute_name == "index":
44
  display_attribute = f"Paper {idx}"
45
- display_attribute: str = paper_attr[display_attribute_name]
 
46
  if top_k is not None:
47
  selected_indices = np.argsort(prob)[-top_k:][::-1]
48
  else:
 
42
  for idx, (prob, paper_attr) in enumerate(zip(probabilities, paper_attributes)):
43
  if display_attribute_name == "index":
44
  display_attribute = f"Paper {idx}"
45
+ else:
46
+ display_attribute: str = paper_attr[display_attribute_name]
47
  if top_k is not None:
48
  selected_indices = np.argsort(prob)[-top_k:][::-1]
49
  else: