Skip to content

Latest commit

 

History

History
97 lines (59 loc) · 2.95 KB

File metadata and controls

97 lines (59 loc) · 2.95 KB

PubMed Journal Club Lookup Tool

Fetch PubMed papers by journal, keyword, and author filters, then generate PowerPoint slides and HTML/txt summaries.

Motivation:

I wanted to track publications formally and avoid the paranoid feeling of missing out on cool new research. Now I run this weekly in the morning over coffee!

Specifically I wanted a powerpoint output from articles-of-interest, such that I can flip through the abstracts and keep up with recent cool publications and build up a list of interesting authors. I don't like newsletters or weekly update emails because the information conveyed is usually not logged in a manner that makes it clear what one has already encountered. Altogether this makes it easier for me to quickly communicate new publications to colleagues (~25 people). - APL


Setup:

# Install dependencies
pip install -r requirements.txt

# Copy sample configs and edit them
cp config/meta.sample.yaml config/meta.yaml
cp config/journals.sample.yaml config/journals.yaml
cp config/keywords.sample.yaml config/keywords.yaml
cp config/authors.sample.yaml config/authors.yaml
cp config/dates.sample.yaml config/dates.yaml

# Edit config files with your details (in config/ directory)

# Validate your config
python -m config.config_loader --check

# Run the tool
python main.py

Configuration:

Config lives in config/ as YAML files:

  • meta.yaml: email (required, used for PubMed), lookup_frequency (e.g., 1 week), update_date.
  • journals.yaml: journals: [ ... ] list of journal names.
  • keywords.yaml: topics: [ ... ] list of keywords.
  • authors.yaml: authors: [ ... ] list of ORCIDs, optionally with names (0000-0000-0000-0000 # Jane Doe).
  • dates.yaml: date_ranges: [[YYYY/MM/DD, YYYY/MM/DD], ...] optional explicit ranges.

Create starter files. Two options:

  • Use the included *.sample.yaml files and copy them as shown above, or
  • Run python -m config.config_loader --init-samples (does not overwrite existing files).

Validate any time:

  • python -m config.config_loader --check
  • Fails fast on missing email, empty journal/keyword lists, invalid dates, or bad lookup_frequency formatting.

Usage:

# Interactive mode (default)
python main.py

# Automatic mode (non-interactive)
python main.py --auto

# Search only by keywords
python main.py --mode keywords

# Search only by authors/ORCIDs
python main.py --mode authors

# Custom config and output directories
python main.py --config-dir /path/to/config --output-dir /path/to/output

Outputs:

  • PowerPoint: publications.pptx (one slide per paper).
  • HTML dashboard: publications.html (interactive tables).
  • Text/JSON summaries: publications.txt, results.json.
  • Confirms with user before overwriting existing files.

Version History:

See CHANGELOG.md for detailed version history.

Running notes:

  • Tested with Python 3.9+.
  • Dependencies are pinned in requirements.txt.
  • Have fun, life is short!