В этом руководстве мы представляем усовершенствованного помощника по исследованиям PubMed, который поможет вам создать оптимизированный конвейер для запросов и анализа биомедицинской литературы. Основное внимание уделяется использованию инструмента PubmedQueryRun для выполнения целевых поисков, таких как «CRISPR редактирование генов», а затем анализу, кэшированию и изучению полученных результатов. Вы узнаете, как извлекать даты публикаций, заголовки и краткие описания; сохранять запросы для мгновенного повторного использования; и подготавливать данные для визуализации или дальнейшего анализа.
Установка и настройка необходимых пакетов Python
Мы устанавливаем и настраиваем все необходимые пакеты Python, включая langchain-community, xmltodict, pandas, matplotlib, seaborn и wordcloud, а также интеграции Google Generative AI и LangChain Google.
“`python
!pip install -q langchain-community xmltodict pandas matplotlib seaborn wordcloud google-generativeai langchain-google-genai
“`
“`python
import os
import re
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime, timedelta
from collections import Counter
from wordcloud import WordCloud
import warnings
warnings.filterwarnings(‘ignore’)
“`
“`python
from langchain_community.tools.pubmed.tool import PubmedQueryRun
from langchaingooglegenai import ChatGoogleGenerativeAI
from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType
“`
Класс AdvancedPubMedResearcher
Мы инкапсулируем рабочий процесс запроса PubMed в нашем классе AdvancedPubMedResearcher, инициализируя инструмент PubmedQueryRun и дополнительный агент на базе LLM с поддержкой Gemini для расширенного анализа.
“`python
class AdvancedPubMedResearcher:
“””Advanced PubMed research assistant with analysis capabilities”””
def init(self, geminiapikey=None):
“””Initialize the researcher with optional Gemini integration”””
self.pubmed_tool = PubmedQueryRun()
self.research_cache = {}
if geminiapikey:
os.environ[“GOOGLEAPIKEY”] = geminiapikey
self.llm = ChatGoogleGenerativeAI(
model=”gemini-1.5-flash”,
temperature=0,
convertsystemmessagetohuman=True
)
self.agent = self.createagent()
else:
self.llm = None
self.agent = None
def createagent(self):
“””Create LangChain agent with PubMed tool”””
tools = [
Tool(
name=”PubMed Search”,
func=self.pubmed_tool.invoke,
description=”Search PubMed for biomedical literature. Use specific terms.”
)
]
return initialize_agent(
tools,
self.llm,
agent=AgentType.ZEROSHOTREACT_DESCRIPTION,
verbose=True
)
“`
Основные методы
Мы предоставляем методы для поиска статей, анализа исследовательских тенденций с помощью наглядных визуализаций и сравнения тем.
“`python
def searchpapers(self, query, maxresults=5):
“””Search PubMed and parse results”””
print(f” Searching PubMed for: ‘{query}'”)
try:
results = self.pubmed_tool.invoke(query)
papers = self.parsepubmed_results(results)
self.research_cache[query] = {
‘papers’: papers,
‘timestamp’: datetime.now(),
‘query’: query
}
print(f” Found {len(papers)} papers”)
return papers
except Exception as e:
print(f” Error searching PubMed: {str(e)}”)
return []
“`
Анализ исследовательских тенденций
“`python
def analyzeresearchtrends(self, queries):
“””Analyze trends across multiple research topics”””
print(” Analyzing research trends…”)
all_papers = []
topic_counts = {}
for query in queries:
papers = self.searchpapers(query, maxresults=3)
topic_counts[query] = len(papers)
for paper in papers:
paper[‘topic’] = query
all_papers.append(paper)
df = pd.DataFrame(all_papers)
if df.empty:
print(” No papers found for analysis”)
return None
self.createvisualizations(df, topic_counts)
return df
“`
Визуализация исследовательских тенденций
“`python
def createvisualizations(self, df, topic_counts):
“””Create research trend visualizations”””
plt.style.use(‘seaborn-v0_8’)
fig, axes = plt.subplots(2, 2, figsize=(15, 12))
fig.suptitle(‘PubMed Research Analysis Dashboard’, fontsize=16, fontweight=’bold’)
topics = list(topic_counts.keys())
counts = list(topic_counts.values())
axes[0,0].bar(range(len(topics)), counts, color=’skyblue’, alpha=0.7)
axes[0,0].set_xlabel(‘Research Topics’)
axes[0,0].set_ylabel(‘Number of Papers’)
axes[0,0].set_title(‘Papers Found by Topic’)
axes[0,0].set_xticks(range(len(topics)))
axes[0,0].set_xticklabels([t[:20]+’…’ if len(t)>20 else t for t in topics], rotation=45, ha=’right’)
“`
Демонстрация основного функционала
“`python
def main():
“””Main tutorial demonstration”””
print(” Advanced PubMed Research Assistant Tutorial”)
print(“=” * 50)
# Initialize researcher
# Uncomment next line and add your free Gemini API key for AI features
# Get your free API key at: https://makersuite.google.com/app/apikey
# researcher = AdvancedPubMedResearcher(geminiapikey=”your-gemini-api-key”)
researcher = AdvancedPubMedResearcher()
print(“\n1⃣ Basic PubMed Search”)
papers = researcher.searchpapers(“CRISPR gene editing”, maxresults=3)
if papers:
print(f”\nFirst paper preview:”)
print(f”Title: {papers[0][‘title’]}”)
print(f”Date: {papers[0][‘date’]}”)
print(f”Summary preview: {papers[0][‘summary’][:200]}…”)
“`
Это руководство демонстрирует, как можно использовать PubMed программно, от создания точных поисковых запросов до анализа и кэширования результатов. Следуя этим шагам, вы сможете автоматизировать процесс поиска литературы, отслеживать тенденции исследований с течением времени и интегрировать расширенный анализ в свои рабочие процессы.
1. Какие инструменты и библиотеки Python используются для автоматизации поиска и анализа литературы в PubMed согласно представленному руководству?
Ответ:
В руководстве используются следующие инструменты и библиотеки Python: langchain-community, xmltodict, pandas, matplotlib, seaborn, wordcloud, google-generativeai, langchain-google-genai.
2. Как в представленном классе AdvancedPubMedResearcher осуществляется инициализация инструмента PubmedQueryRun и агента на базе LLM с поддержкой Gemini?
Ответ:
В классе AdvancedPubMedResearcher инструмент PubmedQueryRun инициализируется в методе init через создание экземпляра PubmedQueryRun(). Агент на базе LLM с поддержкой Gemini создаётся через метод createagent(), который использует initialize_agent() для настройки агента с инструментами и LLM.
3. Какие методы предоставляются для поиска статей и анализа исследовательских тенденций в PubMed?
Ответ:
Для поиска статей предоставляется метод searchpapers(), который выполняет поиск в PubMed и анализирует результаты. Для анализа исследовательских тенденций предоставляется метод analyzeresearch_trends(), который анализирует тенденции по нескольким исследовательским темам.
4. Какие визуализации создаются для представления исследовательских тенденций?
Ответ:
Для представления исследовательских тенденций создаются визуализации в виде столбчатых диаграмм, показывающих количество статей по каждой теме. Это позволяет наглядно отслеживать тенденции исследований.
5. Какие шаги необходимо выполнить для демонстрации основного функционала AdvancedPubMedResearcher?
Ответ:
Для демонстрации основного функционала необходимо выполнить следующие шаги:
1. Инициализировать экземпляр AdvancedPubMedResearcher.
2. Выполнить поиск статей по заданной теме с помощью метода search_papers().
3. Проанализировать результаты поиска и создать визуализации исследовательских тенденций с помощью метода analyzeresearchtrends().