Repository navigation
Search PubMed for fellows/residents and build Networks + from it - #6
Merged
Merged
Conversation
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>
2 of 3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-plusnow readsdata/trainee-publications.json(replacingtrainee-matches.json). Trainee works are joined to faculty works by DOI/PMID/arXiv id; works only a trainee search found are published astrainee_worksso the publication list shows them.openpyxladded as the optionaltraineesextra.Results (roster of 269, faculty publications from 2026-10-19)
Roster and automation
config/trainees.toml(names, degree, program,also_known_asfirst names; no e-mail addresses), generated bydoim-trainee-roster <roster.xlsx>. This makes all 269 roster names public in this repo — an explicit decision. The spreadsheet itself is not committed.refresh-doim-directory.ymlnow runsdoim-trainee-publications --strictanddoim-network-plusafterdoim-refreshand includes their outputs in its PR.data/trainee-matches.jsonare removed.mainonly; the view was checked locally.Test plan
uv run --locked --extra dev --extra trainees --extra graph pytest(248 passed)ruff check🤖 Generated with Claude Code