Skip to main content

Radiowriter

PyPI Licence: AGPL-3.0-only Platform: macOS, Linux, Windows Python 3.11+ Docs Tests Docs build

Find the literature for a Radiopaedia.org article, screen it, and write the article against it.

Search PubMed one line at a time or build the query concept by concept. Rank what comes back by how much it is cited and by where it was published. Sift it down with the filters, keep what is worth keeping in reading lists, then write the article — with the section structure Radiopaedia recommends for that kind of article, the citations resolved for you, their own linter run over your draft, and the formatted HTML their editor expects.

Runs on macOS, Linux and Windows. Nothing leaves your computer except the searches themselves.

Unofficial. Not affiliated with or endorsed by Radiopaedia.org.

Screening the archive

Install

Radiowriter is a Python program that serves a page to your own browser. One command installs it, one command runs it — the same on macOS, Linux and Windows.

uv tool install radiowriter
radiowriter

It opens http://localhost:8501 in your browser. Ctrl+C in the terminal stops it. uv tool upgrade radiowriter updates it, and uv tool uninstall radiowriter removes it — your archive stays where it is.

If you do not have uv

macOS and Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows, in PowerShell:

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

pipx install radiowriter does the same job if you already have pipx.

Want what is on main instead of the last release? uv tool install git+https://github.com/gmadevs/Radiowriter installs straight from the repository — no index, no account, whatever is on the branch right now. How releasing works.

First run

It asks for an email address, and says why: PubMed and Unpaywall both want a contact address in every request, so they can warn whoever is calling instead of silently blocking them. There is nothing to register for, and the address stays on your computer.

Three other things are optional and can wait: an NCBI API key (raises the rate limit from 3 to 10 requests a second), a Semantic Scholar key (faster citation lookups), and your library's LibKey ID (direct full-text links through your subscription).

Journal quartiles

To see journal quartiles and SJR, download the CSV from scimagojr.comDownload data, top right — and drop it in the folder that radiowriter --where prints. Any name starting with scimagojr works; the app picks the most recent one it finds and matches your articles by ISSN.

The file is not bundled: SCImago's data is CC BY-NC, and it is a new file every year.

This is not the Journal Impact Factor. That one is Clarivate's and lives in the JCR. SCImago gives SJR, which weighs citations by the prestige of the journals making them, and cites/doc (2y), which is computed like an impact factor but over Scopus. Both are shown, both are labelled.

What it does

Building a query in blocks

Search. PubMed syntax on one line, or the block builder: one block per concept, every wording of it inside joined by OR, the blocks joined by AND. The ISSG published search filters for guidelines and evidence syntheses are built in. So is a generator that turns the section headings of a Radiopaedia article into search strategies — Epidemiology becomes prevalence and incidence, MRI becomes the MeSH terms and the words for magnetic resonance.

Screen. The archive, filtered by read, flagged, reading list, journal quartile, and sorted by citations or by SJR. Full text through LibKey if your library has it, through Unpaywall if there is a legal free copy. Reading lists you make, rename and delete; an article can be in several at once, and an article in a list is never purged.

Write. A Markdown editor that knows the twenty-three section structures Radiopaedia recommends and can insert the ones your kind of article should have. Cite with [@27859258] — the identifier itself — and the numbering is worked out at export from the order of first appearance. Radiopaedia's own linter rules run over the draft. Two buttons copy the article and the reference list as rich text, so headings, bold and the <sup> markers survive the paste into their editor.

Where your data lives

One SQLite file, in the place your system keeps user data:

macOS ~/Library/Application Support/Radiowriter
Linux ~/.local/share/radiowriter
Windows %LOCALAPPDATA%\Radiowriter

radiowriter --where prints it. RADIOWRITER_HOME=/some/path radiowriter overrides it, which is how you keep an archive on an external disk.

⇅ Export and backup in the sidebar writes a .nbib (the articles, in PubMed's own format, readable by any reference manager) or a .json (the whole archive, to move it to another computer). The .json deliberately leaves your settings out, so a backup you share does not carry your email or your keys.

Running from source

git clone https://github.com/gmadevs/Radiowriter.git
cd Radiowriter
python3 -m venv .venv && . .venv/bin/activate
pip install -e .
radiowriter

The tests need no network and no configuration:

python3 check_rules.py       # the Radiopaedia linter rules
python3 check_structure.py   # the article structures
python3 check_search.py      # query building, ISSG filters, strategies, lists
python3 check_journals.py    # SCImago, journal matching, Unpaywall, backups
python3 check_app.py         # the interface, driven without a browser

check_mesh_live.py is the one exception: it asks PubMed whether every MeSH term the strategies use still exists. Run it when you change them, or when MeSH changes — once a year, in January.

Documentation

gmadevs.github.io/Radiowriter

Install and first run Getting it going, and the SCImago file
Search PubMed · in blocks The filters, and building a query concept by concept
Screen · journals Reading lists, quartiles, open access
Write Structures, citations, the linter
Backup Moving to another computer
How it works Architecture, storage, the services it calls
Known limitations What it does not do, written down

Licence

AGPL-3.0-only.

The Radiopaedia article structures in radiowriter/data/article-structure.json and the linter rules in radiowriter/data/lint-rules.json are transcriptions of Radiopaedia's own published guidance, not ours. Journal metrics come from SCImago, CC BY-NC.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

radiowriter-0.1.1.tar.gz (144.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

radiowriter-0.1.1-py3-none-any.whl (148.7 kB view details)

Uploaded Python 3

File details

Details for the file radiowriter-0.1.1.tar.gz.

File metadata

  • Download URL: radiowriter-0.1.1.tar.gz
  • Upload date:
  • Size: 144.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for radiowriter-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8ceae2f759d04d7ccadce3fead6886de17b7a381d16ac97ea1dd032bc711701a
MD5 c57f9bba184e69cd1b8be93571a1333c
BLAKE2b-256 a63510f38b38ea227cfaadefef7c85f2283b59144028ad96c1207459b21eafbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for radiowriter-0.1.1.tar.gz:

Publisher: release.yml on gmadevs/Radiowriter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radiowriter-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: radiowriter-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 148.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for radiowriter-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 21dd3fe5c69510457319be139ad913927cdb33067be72237a1e754eb0b9624ae
MD5 73823c9dc3d505851eba16c7bd411e63
BLAKE2b-256 09827671ce0b1ab27be81869ddb1ee7c8d684e25eafbd6ce5ef88461ab88b150

See more details on using hashes here.

Provenance

The following attestation bundles were made for radiowriter-0.1.1-py3-none-any.whl:

Publisher: release.yml on gmadevs/Radiowriter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page