awacke1's picture
Update app.py
e12568b verified
raw
history blame
11.3 kB
import streamlit as st
# Page title
st.title("🩺🔍 Search Results")
# Date and title
st.markdown("**Date:** 08 Dec 2023")
st.markdown("**Title:** Machine-learned molecular mechanics force field for the simulation of protein-ligand systems and beyond")
st.markdown("[**Abstract Link**](https://arxiv.org/abs/2307.07085)")
st.markdown("[**PDF Link**](https://arxiv.org/pdf/2307.07085)")
st.write("---")
# Sample table
search_data = [
{"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"},
{"Date": "11 Apr 2023", "Title": "Design, Integration, and Field Evaluation of a Robotic Blossom Thinning System for Tree Fruit Crops", "Abstract Link": "https://arxiv.org/abs/2304.04919", "PDF Link": "https://arxiv.org/pdf/2304.04919"},
# Add more rows as needed...
]
# Display table in Streamlit
st.write("### 📅 Summary of Search Results")
st.table(search_data)
st.markdown('''
Discovery of Espaloma-0.3 (Hero's Journey)
Ordinary World: Traditional force fields struggle with flexibility and extensibility.
Call to Adventure: Researchers propose a new approach using graph neural networks.
Refusal of the Call: Skeptics doubt the new method's feasibility without extensive computational resources.
Meeting the Mentor: Collaboration with experts in quantum chemistry and machine learning.
Crossing the Threshold: Initial tests show promising results, validating the concept.
Tests, Allies, and Enemies: The method faces challenges with specific molecular systems but gains support.
Approach to the Inmost Cave: Intensive training on a diverse dataset.
Ordeal: Tackling edge cases and ensuring stability in simulations.
Reward: The model achieves impressive accuracy and robustness.
The Road Back: Publication and refinement for real-world applications.
Resurrection: Acceptance and adoption in the wider scientific community.
Return with the Elixir: A new, powerful tool for drug discovery and molecular simulations.
Robotic Blossom Thinning (Rags to Riches)
Initial Wholeness: Apple orchards rely heavily on manual labor.
Fall from Grace: Inefficiency and cost concerns rise.
Journey: Researchers develop a robotic solution for blossom thinning.
Personal Resolve: Field tests reveal the robot's potential.
Self-discovery: Optimizing the end-effector's performance.
Major Victory: Significant reduction in labor and cost.
False Defeat: Encountering technical issues during deployment.
Final Victory: Successful large-scale adoption of the robotic system.
Climax: Recognition of the system’s effectiveness and efficiency.
Happily Ever After: Sustainable and cost-effective orchard management.
Graph-Neural-Network Approach for Force Fields (Quest)
Goals: Develop accurate and extendible force fields for large organic molecules.
Challenges: Accurately modeling complex interactions.
Journey: Combining physics-driven potentials with neural network models.
Teamwork: Collaboration between physicists, chemists, and data scientists.
Trials: Extensive testing on different molecular sizes.
Transformation: The approach proves to be robust and extendible.
Setbacks: Refining the model for diverse chemical domains.
Redemption: Improved predictions for new molecular systems.
Success: Establishing a new standard for force field development.
Homecoming: Adoption in scientific research and industry applications.
''')
# Streamlit app
import streamlit as st
st.title("🩺🔍 Search Results")
# Add Stories
st.header("Discovery of Espaloma-0.3 (Hero's Journey) 🧙‍♂️")
st.markdown("1. **Ordinary World:** Traditional force fields struggle with flexibility and extensibility.")
st.markdown("2. **Call to Adventure:** Researchers propose a new approach using graph neural networks.")
# Continue story steps...
st.header("Robotic Blossom Thinning (Rags to Riches) 🛠️")
st.markdown("1. **Initial Wholeness:** Apple orchards rely heavily on manual labor.")
# Continue story steps...
st.header("Graph-Neural-Network Approach for Force Fields (Quest) 🕵️‍♂️")
st.markdown("1. **Goals:** Develop accurate and extendible force fields for large organic molecules.")
# Continue story steps...
# Display Search Results with a table
st.write("### 📅 Summary of Search Results")
import streamlit as st
import pandas as pd
import plotly.express as px
from datetime import datetime
import streamlit as st
import pandas as pd
import plotly.express as px
from datetime import datetime, timedelta
# Load data
@st.cache_data
def load_data():
data = [
{"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."},
{"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"},
{"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."},
{"date": "20 Jun 2023", "title": "CHGNet: Pretrained universal neural network potential for charge-informed atomistic modeling", "authors": "Bowen Deng, et al."},
{"date": "18 Apr 2022", "title": "End-to-End Differentiable Molecular Mechanics Force Field Construction", "authors": "Yuanqing Wang, et al."},
{"date": "30 Oct 2023", "title": "A Planning-and-Exploring Approach to Extreme-Mechanics Force Fields", "authors": "Pengjie Shi, Zhiping Xu"},
{"date": "15 Sep 2019", "title": "A Genetic Algorithm Enabled Similarity-Based Attack on Cancellable Biometrics", "authors": "Xingbo Dong, et al."},
{"date": "02 Jun 2021", "title": "Machine-Learning Non-Conservative Dynamics for New-Physics Detection", "authors": "Ziming Liu, et al."},
{"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."},
{"date": "08 Jun 2021", "title": "BIGDML: Towards Exact Machine Learning Force Fields for Materials", "authors": "Huziel E. Sauceda, et al."},
{"date": "26 Sep 2022", "title": "Learned Force Fields Are Ready For Ground State Catalyst Discovery", "authors": "Michael Schaarschmidt, et al."},
{"date": "08 Nov 2023", "title": "General Framework to Evaluate Unlinkability in Biometric Template Protection Systems", "authors": "Marta Gomez-Barrero, et al."},
{"date": "22 Jan 2023", "title": "Victoria Amazonica Optimization (VAO): An Algorithm Inspired by the Giant Water Lily Plant", "authors": "Seyed Muhammad Hossein Mousavi"},
{"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."},
{"date": "30 Oct 2022", "title": "Regimes of charged particle dynamics in current sheets: the machine learning approach", "authors": "Alexander Lukin, et al."},
{"date": "22 Feb 2023", "title": "Controllable Mechanical-domain Energy Accumulators", "authors": "Sung Y. Kim, David J. Braun"},
{"date": "02 Nov 2023", "title": "Investigating the Behavior of Diffusion Models for Accelerating Electronic Structure Calculations", "authors": "Daniel Rothchild, et al."},
{"date": "05 Jun 2023", "title": "Machine Learning Force Fields with Data Cost Aware Training", "authors": "Alexander Bukharin, et al."},
{"date": "23 Jan 2024", "title": "Force sensing to reconstruct potential energy landscapes for cluttered large obstacle traversal", "authors": "Yaqing Wang, et al."},
{"date": "06 Mar 2024", "title": "Beyond MD17: the reactive xxMD dataset", "authors": "Zihan Pengmei, et al."}
]
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'], format='%d %b %Y')
return df
df = load_data()
# Streamlit app
st.title("🧪 Force Field Research Explorer")
# Sidebar
st.sidebar.header("Filters")
date_range = st.sidebar.date_input("Date Range", [df['date'].min(), df['date'].max()])
filtered_df = df[(df['date'] >= pd.Timestamp(date_range[0])) & (df['date'] <= pd.Timestamp(date_range[1]))]
# Main content
st.header("Research Papers Timeline")
# Add a day to the date to create an end date for the timeline
filtered_df['end_date'] = filtered_df['date'] + timedelta(days=1)
fig = px.timeline(filtered_df, x_start="date", x_end="end_date", y="title", color="authors", hover_name="title")
fig.update_yaxes(autorange="reversed")
st.plotly_chart(fig)
# Rest of the code remains the same...
st.header("Paper Details")
selected_paper = st.selectbox("Select a paper", filtered_df['title'])
paper_details = filtered_df[filtered_df['title'] == selected_paper].iloc[0]
st.write(f"**Date:** {paper_details['date'].strftime('%d %b %Y')}")
st.write(f"**Authors:** {paper_details['authors']}")
st.write(f"**Title:** {paper_details['title']}")
# Word cloud of paper titles
from wordcloud import WordCloud
import matplotlib.pyplot as plt
st.header("Title Word Cloud")
text = " ".join(title for title in filtered_df['title'])
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)
fig, ax = plt.subplots(figsize=(10, 5))
ax.imshow(wordcloud, interpolation='bilinear')
ax.axis('off')
st.pyplot(fig)
# Author network graph
import networkx as nx
st.header("Author Collaboration Network")
G = nx.Graph()
for _, row in filtered_df.iterrows():
authors = [author.strip() for author in row['authors'].split(',')]
for i in range(len(authors)):
for j in range(i+1, len(authors)):
if G.has_edge(authors[i], authors[j]):
G[authors[i]][authors[j]]['weight'] += 1
else:
G.add_edge(authors[i], authors[j], weight=1)
pos = nx.spring_layout(G)
fig, ax = plt.subplots(figsize=(12, 8))
nx.draw(G, pos, with_labels=True, node_color='lightblue',
node_size=1000, font_size=8, font_weight='bold')
edge_labels = nx.get_edge_attributes(G, 'weight')
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)
st.pyplot(fig)
# Topic modeling
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation
st.header("Topic Modeling")
vectorizer = CountVectorizer(stop_words='english')
doc_term_matrix = vectorizer.fit_transform(filtered_df['title'])
LDA = LatentDirichletAllocation(n_components=5, random_state=42)
LDA.fit(doc_term_matrix)
topics = []
for idx, topic in enumerate(LDA.components_):
top_words = [vectorizer.get_feature_names_out()[i] for i in topic.argsort()[:-10 - 1:-1]]
topics.append(f"Topic {idx + 1}: {', '.join(top_words)}")
for topic in topics:
st.write(topic)
st.header("Research Trends")
year_counts = filtered_df.groupby(filtered_df['date'].dt.year).size().reset_index(name='count')
fig = px.line(year_counts, x='date', y='count', title='Number of Papers per Year')
st.plotly_chart(fig)
# Footer
st.markdown("---")
st.write("Data last updated: March 2024")