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")