Validated use: per-package counts¶
How often each R, Python and Stata package is loaded by the code deposited with published papers, at journals whose data-and-code policy the Social Science Data Editors record as actively verified.
4,565 packages · 13,245 deposits with analyzable code · 13,985 deposits collected · built 2026-09-18
A count here is the number of deposits whose code loads the package. Adding one to it takes a paper published at a journal that checks its authors’ code, which is what makes these counts harder to inflate than download counts. The project page makes that case; this file documents what is in the tables and how to read them.
Scope¶
The deposits come from two repositories that hold different disciplines. Zenodo’s verified collections are economics, and Harvard Dataverse’s journal collections are mostly political science.
repository |
deposits |
with analyzable code |
|---|---|---|
Zenodo (economics) |
1,543 |
1,358 |
Harvard Dataverse (political science) |
12,442 |
11,887 |
total |
13,985 |
13,245 |
Counts pool the two. usage_by_package.csv also carries the split, in
n_deposits_zenodo and n_deposits_dataverse, because the two are
very different sizes and a pooled figure alone would hide that.
Both repositories were collected with the same rules in 2026: every code,
notebook and knitr file and every dependency manifest, with the deposit’s own
directories, and code recovered from archives too large to download. An
archive that could not be read is counted in summary.json rather than
dropped. The two collections still differ in discipline, which the per-source
columns keep visible.
Files¶
file |
rows |
contents |
|---|---|---|
|
4,565 |
per-package deposit and call counts, pooled and split |
|
14,670 |
the same by deposit year |
|
22,838 |
the same per journal or community |
|
20,942 |
package → function, where the source names one |
|
2,787 |
names called in code that resolve to no registry |
|
473 |
what deposits install from outside their registry, and from where |
|
43,918 |
each package’s validated use beside its registry’s download count |
|
24 |
deposits containing each language, per repository |
|
14,853,082 |
every mention: package, function, file, line, snippet |
|
447,289 |
the provenance spine every mention joins to |
|
33,874 |
what manifests declare: shipped, locked or asked for |
|
19,983 |
R, Python and Stata versions, and the OS, where a file says |
|
deposits stating each signal, over deposits that could |
|
|
corpus counts the tables are shares of |
mentions.parquet is the record every count above is a sum of, and it is
here so a reader who disagrees with a decision made upstream can recount
without re-parsing 200,000 files. It is 94 MB; the CSVs are 150 KB.
declared_dependencies.parquet and environment_signals.parquet are sparse
and answer a different question: not what the code loads but what version of
it the deposit shipped, and what ran it. Most deposits say nothing at all, so
read these next to environment_coverage.json, which gives per signal the
deposits that said something over the deposits that were in a position to.
usage_by_package.csv¶
package,language,ecosystem: the resolved package and its registryn_deposits: deposits loading it, counted once per depositn_files,n_mentions: files, and raw callsn_deposits_at_risk: the denominator forshare_of_deposits, meaning deposits that hold an analyzable file in that language, or that yielded a reference in it. The second clause is what covers literate documents, where the file is a notebook and the code inside it is Python. It differs by language, so a Stata share and an R share are not shares of the same thingshare_of_deposits:n_depositsdivided byn_deposits_at_risk
unknown_names.csv¶
Names that code uses and that resolve to no registry, unfiltered. Install
and inquiry lines are excluded: ssc install x states a dependency and is not
a call. Some rows are false positives, and some are programs a deposit defines
for itself. Pruning the list by hand would put a judgement call inside a file
whose value is that you can check every row of it.
name,languagen_deposits,n_mentions: deposits using the name, and raw uses. Rank by deposits: one deposit calling something six hundred times is one user of itn_deposits_defining: how many deposits define a Stata program of this name for themselves. A name many authors independently give a helper is more likely one here too, with aprogram definethe lexer did not reach, than it is software nobody indexed
remote_installs.csv¶
What deposits fetch from somewhere other than their language’s registry:
remotes::install_github("user/repo"), net install x, from(URL),
pip install git+https://.... It is the only record a deposit leaves of where
off-registry software lives.
name,language,host: the package and the host it is fetched fromin_registry: the registry lists the name anyway, so this is a development version of a registered package rather than software the registry lacksn_deposits_installing,n_deposits_loading: deposits with the install line, and those among them that go on to use the package
downloads_vs_use.csv¶
Validated use beside download counts, for every package that SSC, CRAN or
PyPI has a count for or that the corpus uses. The download counts are not
ours: SSC’s monthly hits behind ssc hot, CRAN’s from one mirror through
cranlogs, and PyPI’s for its fifteen thousand most downloaded projects from
hugovk/top-pypi-packages, each pinned by date and digest. The windows
differ, so compare ranks within one registry, not counts across them.
package,language,ecosystemn_deposits: deposits using the package; 0 for a counted package this corpus never usesdownloads: the registry’s count; empty for a used package it has none forin_registry_counts: the row belongs to the registry’s own list of counted packages, as against a count fetched because the corpus uses the packagereverse_dependencies,in_task_view: CRAN only. How many packages install this one as a dependency, directly or through others, and whether CRAN’s Econometrics or Causal Inference task view lists it
Licence¶
CC0.
Regenerating¶
uv run python scripts/build_tally.py # needs the collected corpus
uv run python scripts/release_tally.py
Produced by softverse.