awacke1 commited on
Commit
3d4d537
·
verified ·
1 Parent(s): 5b210aa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +119 -3
app.py CHANGED
@@ -87,9 +87,125 @@ st.markdown("1. **Goals:** Develop accurate and extendible force fields for larg
87
 
88
  # Display Search Results with a table
89
  st.write("### 📅 Summary of Search Results")
90
- search_data = [
91
- {"Date": "08 Dec 2023", "Title": "Machine-learned molecular mechanics force field for the simulation of protein-ligand systems and beyond", "Abstract Link": "https://arxiv.org/abs/2307.07085", "PDF Link": "https://arxiv.org/pdf/2307.07085"},
92
- {"Date": "11 Apr 2023", "Title": "Design, Integration, and Field Evaluation of a Robotic Blossom Thinning System for Tree Fruit Crops", "Abstract Link": "https
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
 
95
 
 
87
 
88
  # Display Search Results with a table
89
  st.write("### 📅 Summary of Search Results")
 
 
 
90
 
91
+ import streamlit as st
92
+ import pandas as pd
93
+ import plotly.express as px
94
+ from datetime import datetime
95
+
96
+ # Load data
97
+ @st.cache_data
98
+ def load_data():
99
+ data = [
100
+ {"date": "08 Dec 2023", "title": "Machine-learned molecular mechanics force field for the simulation of protein-ligand systems and beyond", "authors": "Kenichiro Takaba, et al."},
101
+ {"date": "11 Apr 2023", "title": "Design, Integration, and Field Evaluation of a Robotic Blossom Thinning System for Tree Fruit Crops", "authors": "Uddhav Bhattarai, Qin Zhang, Manoj Karkee"},
102
+ {"date": "02 Jun 2021", "title": "An Extendible, Graph-Neural-Network-Based Approach for Accurate Force Field Development of Large Flexible Organic Molecules", "authors": "Xufei Wang, et al."},
103
+ {"date": "20 Jun 2023", "title": "CHGNet: Pretrained universal neural network potential for charge-informed atomistic modeling", "authors": "Bowen Deng, et al."},
104
+ {"date": "18 Apr 2022", "title": "End-to-End Differentiable Molecular Mechanics Force Field Construction", "authors": "Yuanqing Wang, et al."},
105
+ {"date": "30 Oct 2023", "title": "A Planning-and-Exploring Approach to Extreme-Mechanics Force Fields", "authors": "Pengjie Shi, Zhiping Xu"},
106
+ {"date": "15 Sep 2019", "title": "A Genetic Algorithm Enabled Similarity-Based Attack on Cancellable Biometrics", "authors": "Xingbo Dong, et al."},
107
+ {"date": "02 Jun 2021", "title": "Machine-Learning Non-Conservative Dynamics for New-Physics Detection", "authors": "Ziming Liu, et al."},
108
+ {"date": "15 Jun 2021", "title": "Graphical Gaussian Process Regression Model for Aqueous Solvation Free Energy Prediction of Organic Molecules in Redox Flow Battery", "authors": "Peiyuan Gao, et al."},
109
+ {"date": "08 Jun 2021", "title": "BIGDML: Towards Exact Machine Learning Force Fields for Materials", "authors": "Huziel E. Sauceda, et al."},
110
+ {"date": "26 Sep 2022", "title": "Learned Force Fields Are Ready For Ground State Catalyst Discovery", "authors": "Michael Schaarschmidt, et al."},
111
+ {"date": "08 Nov 2023", "title": "General Framework to Evaluate Unlinkability in Biometric Template Protection Systems", "authors": "Marta Gomez-Barrero, et al."},
112
+ {"date": "22 Jan 2023", "title": "Victoria Amazonica Optimization (VAO): An Algorithm Inspired by the Giant Water Lily Plant", "authors": "Seyed Muhammad Hossein Mousavi"},
113
+ {"date": "09 Dec 2019", "title": "Automated Fitting of Neural Network Potentials at Coupled Cluster Accuracy: Protonated Water Clusters as Testing Ground", "authors": "Christoph Schran, et al."},
114
+ {"date": "30 Oct 2022", "title": "Regimes of charged particle dynamics in current sheets: the machine learning approach", "authors": "Alexander Lukin, et al."},
115
+ {"date": "22 Feb 2023", "title": "Controllable Mechanical-domain Energy Accumulators", "authors": "Sung Y. Kim, David J. Braun"},
116
+ {"date": "02 Nov 2023", "title": "Investigating the Behavior of Diffusion Models for Accelerating Electronic Structure Calculations", "authors": "Daniel Rothchild, et al."},
117
+ {"date": "05 Jun 2023", "title": "Machine Learning Force Fields with Data Cost Aware Training", "authors": "Alexander Bukharin, et al."},
118
+ {"date": "23 Jan 2024", "title": "Force sensing to reconstruct potential energy landscapes for cluttered large obstacle traversal", "authors": "Yaqing Wang, et al."},
119
+ {"date": "06 Mar 2024", "title": "Beyond MD17: the reactive xxMD dataset", "authors": "Zihan Pengmei, et al."}
120
+ ]
121
+ df = pd.DataFrame(data)
122
+ df['date'] = pd.to_datetime(df['date'], format='%d %b %Y')
123
+ return df
124
+
125
+ df = load_data()
126
+
127
+ # Streamlit app
128
+ st.title("🧪 Force Field Research Explorer")
129
+
130
+ # Sidebar
131
+ st.sidebar.header("Filters")
132
+ date_range = st.sidebar.date_input("Date Range", [df['date'].min(), df['date'].max()])
133
+ filtered_df = df[(df['date'] >= pd.Timestamp(date_range[0])) & (df['date'] <= pd.Timestamp(date_range[1]))]
134
+
135
+ # Main content
136
+ st.header("Research Papers Timeline")
137
+ fig = px.timeline(filtered_df, x_start="date", y="title", color="authors", hover_name="title")
138
+ fig.update_yaxes(autorange="reversed")
139
+ st.plotly_chart(fig)
140
+
141
+ st.header("Paper Details")
142
+ selected_paper = st.selectbox("Select a paper", filtered_df['title'])
143
+ paper_details = filtered_df[filtered_df['title'] == selected_paper].iloc[0]
144
+ st.write(f"**Date:** {paper_details['date'].strftime('%d %b %Y')}")
145
+ st.write(f"**Authors:** {paper_details['authors']}")
146
+ st.write(f"**Title:** {paper_details['title']}")
147
+
148
+ # Word cloud of paper titles
149
+ from wordcloud import WordCloud
150
+ import matplotlib.pyplot as plt
151
+
152
+ st.header("Title Word Cloud")
153
+ text = " ".join(title for title in filtered_df['title'])
154
+ wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)
155
+
156
+ fig, ax = plt.subplots(figsize=(10, 5))
157
+ ax.imshow(wordcloud, interpolation='bilinear')
158
+ ax.axis('off')
159
+ st.pyplot(fig)
160
+
161
+ # Author network graph
162
+ import networkx as nx
163
+
164
+ st.header("Author Collaboration Network")
165
+ G = nx.Graph()
166
+ for _, row in filtered_df.iterrows():
167
+ authors = [author.strip() for author in row['authors'].split(',')]
168
+ for i in range(len(authors)):
169
+ for j in range(i+1, len(authors)):
170
+ if G.has_edge(authors[i], authors[j]):
171
+ G[authors[i]][authors[j]]['weight'] += 1
172
+ else:
173
+ G.add_edge(authors[i], authors[j], weight=1)
174
+
175
+ pos = nx.spring_layout(G)
176
+ fig, ax = plt.subplots(figsize=(12, 8))
177
+ nx.draw(G, pos, with_labels=True, node_color='lightblue',
178
+ node_size=1000, font_size=8, font_weight='bold')
179
+ edge_labels = nx.get_edge_attributes(G, 'weight')
180
+ nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)
181
+ st.pyplot(fig)
182
+
183
+ # Topic modeling
184
+ from sklearn.feature_extraction.text import CountVectorizer
185
+ from sklearn.decomposition import LatentDirichletAllocation
186
+
187
+ st.header("Topic Modeling")
188
+ vectorizer = CountVectorizer(stop_words='english')
189
+ doc_term_matrix = vectorizer.fit_transform(filtered_df['title'])
190
+
191
+ LDA = LatentDirichletAllocation(n_components=5, random_state=42)
192
+ LDA.fit(doc_term_matrix)
193
+
194
+ topics = []
195
+ for idx, topic in enumerate(LDA.components_):
196
+ top_words = [vectorizer.get_feature_names_out()[i] for i in topic.argsort()[:-10 - 1:-1]]
197
+ topics.append(f"Topic {idx + 1}: {', '.join(top_words)}")
198
+
199
+ for topic in topics:
200
+ st.write(topic)
201
+
202
+ st.header("Research Trends")
203
+ year_counts = filtered_df.groupby(filtered_df['date'].dt.year).size().reset_index(name='count')
204
+ fig = px.line(year_counts, x='date', y='count', title='Number of Papers per Year')
205
+ st.plotly_chart(fig)
206
+
207
+ # Footer
208
+ st.markdown("---")
209
+ st.write("Data last updated: March 2024")
210
 
211