Skip to main content

Radiowriter

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 git+https://github.com/gmadevs/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 git+https://github.com/gmadevs/Radiowriter does the same job if you already have pipx.

Why from git and not from PyPI? Because nothing has been released there yet. Installing from the repository needs no index and no account, and gives you exactly what is on main. When the first version is published the command shortens to uv tool install radiowriter and nothing else changes. 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.0.tar.gz (144.7 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.0-py3-none-any.whl (148.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: radiowriter-0.1.0.tar.gz
  • Upload date:
  • Size: 144.7 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.0.tar.gz
Algorithm Hash digest
SHA256 8b34cf3d005152c12e8816336658019ccf73792349ca91cd37a26397f057a9ce
MD5 4e1e861db18f96eb0884f086b6cd7f81
BLAKE2b-256 1009f45fbc1af1dbde28be14ad7b4e10463b5b2302316b0b457b8e9f98634f46

See more details on using hashes here.

Provenance

The following attestation bundles were made for radiowriter-0.1.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: radiowriter-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 148.8 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cdc64de142f3489caef22000baa90fb8b76acd4958b495a4bcdc09c5d9294a41
MD5 46ec4e21a62ebc4ffe6c02fa4da3b62e
BLAKE2b-256 5f72e76114928f013003cde0de1e529b7a453a39fedd065c6f668fc076afece7

See more details on using hashes here.

Provenance

The following attestation bundles were made for radiowriter-0.1.0-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

0.1.1

2 files

This release

0.1.0 This release

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