Skip to content

Search PubMed for fellows/residents and build Networks + from it - #6

Merged
gvegayon merged 3 commits into
mainfrom
feat/trainee-publication-search
Oct 22, 2026
Merged

gvegayon merged 3 commits into
mainfrom
feat/trainee-publication-search

Conversation

@gvegayon

@gvegayon gvegayon commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

Why

Residents' publications only appeared when a DOIM faculty co-author's PubMed search returned them (the R script matched roster names against the faculty corpus). Papers without a faculty co-author were never collected; e.g. Sideris showed 29 of his 35 Utah-affiliated papers.

What

  • doim_explorer/trainees.py + doim-trainee-publications <roster.xlsx>: runs the same core collector as faculty over the roster, with the configured University of Utah affiliation terms and a full author name query ("Last, First" or "Last, First *", plus the e-mail first name when it differs). Initial-only queries were tried first and collided on common names (3 trainees hit the 100-work cap).
  • doim-network-plus now reads data/trainee-publications.json (replacing trainee-matches.json). Trainee works are joined to faculty works by DOI/PMID/arXiv id; works only a trainee search found are published as trainee_works so the publication list shows them.
  • The Networks + page text and method panel describe the search instead of name scoring.
  • openpyxl added as the optional trainees extra.

Results (roster of 269, faculty publications from 2026-10-19)

Name matching Full-name search
Trainees with publications 66 105
Trainee nodes in the network 66 70
Links 1,474 1,488
Linked works with no faculty author — 265

Roster and automation

  • The roster is versioned in config/trainees.toml (names, degree, program, also_known_as first names; no e-mail addresses), generated by doim-trainee-roster <roster.xlsx>. This makes all 269 roster names public in this repo — an explicit decision. The spreadsheet itself is not committed.
  • The weekly refresh-doim-directory.yml now runs doim-trainee-publications --strict and doim-network-plus after doim-refresh and includes their outputs in its PR.
  • The superseded R name matcher and data/trainee-matches.json are removed.
  • Pages deploys from main only; the view was checked locally.

Test plan

  • uv run --locked --extra dev --extra trainees --extra graph pytest (248 passed)
  • ruff check
  • Open Networks +, select a resident (e.g. Sideris), confirm the publication list and method panel

🤖 Generated with Claude Code

gvegayon and others added 3 commits October 21, 2026 21:48
Residents' papers only reached the network when a department faculty
member's search happened to return them, so most of their work was
missing. `doim-trainee-publications` now runs the faculty collector over
the roster with an affiliation-scoped full-author-name query, and
`doim-network-plus` reads its output instead of the R name matches.
Works only a trainee search found are published with the network so the
page can list them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Networks + is built from the trainee PubMed search now; the published
network marks every fellow/resident by kind and program, so the R
matcher and data/trainee-matches.json are no longer needed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The roster now lives in config/trainees.toml (names, degree, program,
other first names; no e-mail addresses), generated from the program's
spreadsheet by `doim-trainee-roster`, which keeps hand-added aliases and
query overrides. The weekly directory refresh searches every trainee and
rebuilds Networks +, so new papers arrive without a manual run. The
trainee publication documents are committed so each run merges into the
last. Initials are never searched alone, as a roster first name or as a
name taken from an e-mail address.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gvegayon
gvegayon merged commit 5b48a21 into main Oct 22, 2026
1 check passed
@gvegayon
gvegayon deleted the feat/trainee-publication-search branch October 22, 2026 06:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant