SPB Git

spb/wp44_uqo

Public

WP44: generators for Appendix F (supplementary tables) and G (figure documentation)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Nov 3, 2026) parent a28d07f Browse files

5 changed files +73 −58

modified manuscript/appendices/appF_supplementary_tables.tex +19 −1
@@ -1 +1,19 @@
1−% appF_supplementary_tables — to be written (Phase 7) 1+\section{Supplementary tables}\label{app:supp-tables}
2+This appendix collects the generated tables not shown in the main text. Every table is produced by \texttt{tables/make\_tables.py} from the result file(s) named in its first comment line; none is edited by hand.
3+
4+\input{tables/tab_prisma}
5+\clearpage
6+\input{tables/tab_eligible_by_year}
7+\clearpage
8+\input{tables/tab_eligible_by_type}
9+\clearpage
10+\input{tables/tab_linkage}
11+\clearpage
12+\input{tables/tab_volume_yearly}
13+\clearpage
14+\input{tables/tab_team_size}
15+\clearpage
16+\input{tables/tab_breaks}
17+\clearpage
18+\input{tables/tab_known_set}
19+\clearpage
modified manuscript/appendices/appG_figure_documentation.tex +21 −1
@@ -1 +1,21 @@
1−% appG_figure_documentation — to be written (Phase 7) 1+\section{Figure documentation}\label{app:figures}
2+All figures are generated by \texttt{figures/make\_figures.py} (matplotlib, vector PDF) with the validated palette of \texttt{figures/style.py}; the table lists, for each figure, its caption and the result artefacts it reads. Colours follow a fixed categorical order; one axis per panel; direct labels for at most four series; the 2022-11-30 reference date is drawn as a dashed line and never as a series.
3+
4+\begin{longtable}{p{0.22\linewidth}p{0.46\linewidth}p{0.26\linewidth}}
5+\caption{Figure inventory.}\label{tab:figure-inventory}\\
6+\toprule \textbf{File} & \textbf{Caption} & \textbf{Sources} \\ \midrule \endfirsthead
7+\toprule \textbf{File} & \textbf{Caption} & \textbf{Sources} \\ \midrule \endhead
8+\texttt{fig\_prisma\_flow.pdf} & PRISMA-style flow of record identification, exclusion and the final mapping corpus. & prisma\_counts.json \\
9+\texttt{fig\_volume\_yearly.pdf} & Eligible works per publication year by source membership (2026 incomplete). & volume\_yearly.csv \\
10+\texttt{fig\_volume\_monthly\_raw.pdf} & Monthly first appearances; January spikes reflect year-only publication dates and motivate the month-precision filter. & volume\_monthly.csv \\
11+\texttt{fig\_types\_openness.pdf} & Document-type composition and metadata completeness by year. & volume\_yearly.csv \\
12+\texttt{fig\_collaboration.pdf} & Team size, international co-authorship and industry participation by year. & team\_size\_yearly.csv; industry\_share\_yearly.csv \\
13+\texttt{fig\_citation\_inequality.pdf} & Fixed-window citation levels and inequality by publication year (years with complete 36-month windows). & citation\_windows\_yearly.csv \\
14+\texttt{fig\_field\_inflows.pdf} & Share of references pointing outside the corpus, by cited OpenAlex field and citing year. & field\_flows\_yearly.csv \\
15+\texttt{fig\_cited\_age.pdf} & Distribution of the age of cited works for selected citing years. & cited\_age\_yearly.csv \\
16+\texttt{fig\_venue\_concentration.pdf} & Number of distinct venues and venue concentration (HHI, top-source share) by year. & venue\_hhi\_yearly.csv \\
17+\texttt{fig\_country\_shares.pdf} & Country shares of output with fractional counting, top eight countries. & countries\_yearly.csv \\
18+\texttt{fig\_its\_total.pdf} & Monthly output with the interrupted-time-series fit; level and slope changes with HAC and placebo p-values. & fit\_total.csv; its\_results.json \\
19+\texttt{fig\_placebo\_total.pdf} & Placebo distribution of ITS t-statistics over every candidate event month; the true event is highlighted. & placebo\_total.csv \\
20+\bottomrule
21+\end{longtable}
modified manuscript/references_part03.bib +0 −48
@@ -4,16 +4,6 @@
4 % alperin2024openalex, ginsparg2011arxiv, haddaway2022prismaflow, hendricks2020crossref, ley2002dblp, ley2009dblp, page2021prisma, petersen2008mapping, petersen2015mapping, priem2022openalex, rethlefsen2021prismas, tricco2018prismascr, visser2021comparison, waltman2016review, wang2020mag 4 % alperin2024openalex, ginsparg2011arxiv, haddaway2022prismaflow, hendricks2020crossref, ley2002dblp, ley2009dblp, page2021prisma, petersen2008mapping, petersen2015mapping, priem2022openalex, rethlefsen2021prismas, tricco2018prismascr, visser2021comparison, waltman2016review, wang2020mag
5 % (their verification rows remain in references_verification_part03.csv with note=reused:references.bib). 5 % (their verification rows remain in references_verification_part03.csv with note=reused:references.bib).
6 6
7−@article{page2021prismaee,
8− author = {Page, Matthew J. and Moher, David and Bossuyt, Patrick M. and Boutron, Isabelle and Hoffmann, Tammy C. and Mulrow, Cynthia D. and Shamseer, Larissa and Tetzlaff, Jennifer M. and Akl, Elie A. and Brennan, Sue E. and Chou, Roger and Glanville, Julie and Grimshaw, Jeremy M. and Hr{\'o}bjartsson, Asbj{\o}rn and Lalu, Manoj M. and Li, Tianjing and Loder, Elizabeth W. and Mayo-Wilson, Evan and McDonald, Steve and McGuinness, Luke A. and Stewart, Lesley A. and Thomas, James and Tricco, Andrea C. and Welch, Vivian A. and Whiting, Penny and McKenzie, Joanne E.},
9− title = {{PRISMA} 2020 explanation and elaboration: updated guidance and exemplars for reporting systematic reviews},
10− journal = {BMJ},
11− year = {2021},
12− volume = {372},
13− pages = {n160},
14− doi = {10.1136/bmj.n160},
15− note = {verified: crossref 2026-11-03}
16−}
17 @article{gusenbauer2020search, 7 @article{gusenbauer2020search,
18 author = {Gusenbauer, Michael and Haddaway, Neal R.}, 8 author = {Gusenbauer, Michael and Haddaway, Neal R.},
19 title = {Which academic search systems are suitable for systematic reviews or meta-analyses? {Evaluating} retrieval qualities of {Google Scholar}, {PubMed}, and 26 other resources}, 9 title = {Which academic search systems are suitable for systematic reviews or meta-analyses? {Evaluating} retrieval qualities of {Google Scholar}, {PubMed}, and 26 other resources},
@@ -34,24 +24,6 @@
34 howpublished = {arXiv preprint arXiv:1905.00075}, 24 howpublished = {arXiv preprint arXiv:1905.00075},
35 note = {verified: arxiv 2026-11-03} 25 note = {verified: arxiv 2026-11-03}
36 } 26 }
37−@article{culbert2025openalex,
38− author = {Culbert, Jack H. and Hobert, Anne and Jahn, Najko and Haupka, Nick and Schmidt, Marion and Donner, Paul and Mayr, Philipp},
39− title = {Reference coverage analysis of {OpenAlex} compared to {Web of Science} and {Scopus}},
40− journal = {Scientometrics},
41− year = {2025},
42− volume = {130},
43− pages = {2475--2492},
44− doi = {10.1007/s11192-025-05293-3},
45− note = {verified: crossref 2026-11-03}
46−}
47−@article{scheidsteger2023openalex,
48− author = {Scheidsteger, Thomas and Haunschild, Robin},
49− title = {Which of the metadata with relevance for bibliometrics are the same and which are different when switching from {Microsoft Academic Graph} to {OpenAlex}?},
50− journal = {Profesional de la informaci{\'o}n},
51− year = {2023},
52− doi = {10.3145/epi.2023.mar.09},
53− note = {verified: crossref 2026-11-03}
54−}
55 @article{delgadoquiros2024completeness, 27 @article{delgadoquiros2024completeness,
56 author = {Delgado-Quir{\'o}s, Lorena and Ortega, Jos{\'e} Luis}, 28 author = {Delgado-Quir{\'o}s, Lorena and Ortega, Jos{\'e} Luis},
57 title = {Completeness degree of publication metadata in eight free-access scholarly databases}, 29 title = {Completeness degree of publication metadata in eight free-access scholarly databases},
@@ -93,16 +65,6 @@
93 doi = {10.1007/978-3-642-31164-2}, 65 doi = {10.1007/978-3-642-31164-2},
94 note = {verified: crossref 2026-11-03} 66 note = {verified: crossref 2026-11-03}
95 } 67 }
96−@article{lin2020preprints,
97− author = {Lin, Jialiang and Yu, Yao and Zhou, Yu and Zhou, Zhiyang and Shi, Xiaodong},
98− title = {How many preprints have actually been printed and why: a case study of computer science preprints on {arXiv}},
99− journal = {Scientometrics},
100− year = {2020},
101− volume = {124},
102− pages = {555--574},
103− doi = {10.1007/s11192-020-03430-8},
104− note = {verified: crossref 2026-11-03}
105−}
106 @article{cabanac2021preprint, 68 @article{cabanac2021preprint,
107 author = {Cabanac, Guillaume and Oikonomidi, Theodora and Boutron, Isabelle}, 69 author = {Cabanac, Guillaume and Oikonomidi, Theodora and Boutron, Isabelle},
108 title = {Day-to-day discovery of preprint--publication links}, 70 title = {Day-to-day discovery of preprint--publication links},
@@ -113,16 +75,6 @@
113 doi = {10.1007/s11192-021-03900-7}, 75 doi = {10.1007/s11192-021-03900-7},
114 note = {verified: crossref 2026-11-03} 76 note = {verified: crossref 2026-11-03}
115 } 77 }
116−@article{wang2013window,
117− author = {Wang, Jian},
118− title = {Citation time window choice for research impact evaluation},
119− journal = {Scientometrics},
120− year = {2013},
121− volume = {94},
122− pages = {851--872},
123− doi = {10.1007/s11192-012-0775-9},
124− note = {verified: crossref 2026-11-03 (online 2012, volume 94 = 2013)}
125−}
126 @article{nosek2018preregistration, 78 @article{nosek2018preregistration,
127 author = {Nosek, Brian A. and Ebersole, Charles R. and DeHaven, Alexander C. and Mellor, David T.}, 79 author = {Nosek, Brian A. and Ebersole, Charles R. and DeHaven, Alexander C. and Mellor, David T.},
128 title = {The preregistration revolution}, 80 title = {The preregistration revolution},
modified manuscript/sections/part03_data.tex +8 −8
@@ -16,7 +16,7 @@ these choices for WP44 and reports, stage by stage, how the mapping corpus was a
16 sources. The exposition follows the order of the pipeline (identification, linkage, deduplication, 16 sources. The exposition follows the order of the pipeline (identification, linkage, deduplication,
17 eligibility, scope, dating) and closes with the quality indicators and the research-integrity procedures that 17 eligibility, scope, dating) and closes with the quality indicators and the research-integrity procedures that
18 govern every later analysis. The reporting structure is modelled on the PRISMA 2020 items that apply to a 18 govern every later analysis. The reporting structure is modelled on the PRISMA 2020 items that apply to a
19−mapping study \citep{page2021prisma,page2021prismaee}; items concerned with risk of bias and effect measures 19+mapping study \citep{page2021prisma,page2021prismaexplanation}; items concerned with risk of bias and effect measures
20 have no counterpart in a bibliometric design and are replaced, as PRISMA-ScR does for scoping reviews 20 have no counterpart in a bibliometric design and are replaced, as PRISMA-ScR does for scoping reviews
21 \citep{tricco2018prismascr}, by indicators of metadata quality and coverage (Section~\ref{sec:data-quality}). 21 \citep{tricco2018prismascr}, by indicators of metadata quality and coverage (Section~\ref{sec:data-quality}).
22 The search-reporting recommendations of PRISMA-S \citep{rethlefsen2021prismas} are followed to the extent 22 The search-reporting recommendations of PRISMA-S \citep{rethlefsen2021prismas} are followed to the extent
@@ -33,8 +33,8 @@ coverage between Web of Science, Scopus, Dimensions, Crossref and Microsoft Acad
33 indexes is known to under-represent conference proceedings, which carry a large share of computer-science 33 indexes is known to under-represent conference proceedings, which carry a large share of computer-science
34 output \citep{mongeon2016coverage}. For the open successor of Microsoft Academic, OpenAlex, the first 34 output \citep{mongeon2016coverage}. For the open successor of Microsoft Academic, OpenAlex, the first
35 independent assessments report strong coverage of works with DOIs together with weaker and uneven metadata on 35 independent assessments report strong coverage of works with DOIs together with weaker and uneven metadata on
36−affiliations, document types and references \citep{alperin2024openalex,culbert2025openalex, 36+affiliations, document types and references \citep{alperin2024openalex,culbert2025openalexcoverage,
37−scheidsteger2023openalex,delgadoquiros2024completeness}. These findings motivate the design adopted here: one 37+scheidsteger2023magopenalex,delgadoquiros2024completeness}. These findings motivate the design adopted here: one
38 source supplies the backbone (OpenAlex), a second supplies the definition of what counts as computer science 38 source supplies the backbone (OpenAlex), a second supplies the definition of what counts as computer science
39 (DBLP), a third supplies the preprint layer and its dates (arXiv), and a fourth checks the coverage of a 39 (DBLP), a third supplies the preprint layer and its dates (arXiv), and a fourth checks the coverage of a
40 subfield with a dense, curated venue structure (the ACL Anthology). Crossref is used for verification only. 40 subfield with a dense, curated venue structure (the ACL Anthology). Crossref is used for verification only.
@@ -278,7 +278,7 @@ for the linkage-precision review.
278 For arXiv, the order is: (i) arXiv identifier equality against the identifier OpenAlex records for the work, 278 For arXiv, the order is: (i) arXiv identifier equality against the identifier OpenAlex records for the work,
279 (ii) DOI equality for e-prints that carry a journal DOI, (iii) normalised title equality with a year 279 (ii) DOI equality for e-prints that carry a journal DOI, (iii) normalised title equality with a year
280 difference of at most two, the wider tolerance reflecting the typical lag between a preprint and its published 280 difference of at most two, the wider tolerance reflecting the typical lag between a preprint and its published
281−version \citep{lin2020preprints}. The steps linked \LinkLinkArxivOaArxivId{}, \LinkLinkArxivOaDoi{} and 281+version \citep{lin2020arxivcs}. The steps linked \LinkLinkArxivOaArxivId{}, \LinkLinkArxivOaDoi{} and
282 \LinkLinkArxivOaTitleYear{} records respectively, for \LinkArxivLinkedDistinct{} distinct e-prints linked. 282 \LinkLinkArxivOaTitleYear{} records respectively, for \LinkArxivLinkedDistinct{} distinct e-prints linked.
283 For the ACL Anthology, the order is: (i) DOI equality, (ii) equality between the Anthology identifier and the 283 For the ACL Anthology, the order is: (i) DOI equality, (ii) equality between the Anthology identifier and the
284 identifier embedded in an \texttt{aclanthology.org} landing-page URL among the work's OpenAlex locations, 284 identifier embedded in an \texttt{aclanthology.org} landing-page URL among the work's OpenAlex locations,
@@ -400,7 +400,7 @@ both is counted once, under either route). Set against the \PrismaEligibleByType
400 published counterpart, the figure shows that most e-prints in the candidate set were not matched to a 400 published counterpart, the figure shows that most e-prints in the candidate set were not matched to a
401 published version within OpenAlex. Three explanations coexist and cannot be separated without manual review: 401 published version within OpenAlex. Three explanations coexist and cannot be separated without manual review:
402 many e-prints are genuinely unpublished, consistent with the publication rates reported for computer-science 402 many e-prints are genuinely unpublished, consistent with the publication rates reported for computer-science
403−preprints \citep{lin2020preprints}; some published versions carry a modified title; and some published 403+preprints \citep{lin2020arxivcs}; some published versions carry a modified title; and some published
404 versions are not in OpenAlex or lack a computer-science topic. The first explanation is benign; the second and 404 versions are not in OpenAlex or lack a computer-science topic. The first explanation is benign; the second and
405 third leave a residual double count whose size is bounded in Part~IX by re-running the pairing with a title 405 third leave a residual double count whose size is bounded in Part~IX by re-running the pairing with a title
406 similarity threshold rather than exact equality and reporting the difference as a sensitivity, not as a 406 similarity threshold rather than exact equality and reporting the difference as a sensitivity, not as a
@@ -697,7 +697,7 @@ published but not yet indexed (indexing lag), works indexed but not yet linked t
697 own curation lags the publishers, and works whose citation counts have had little time to accumulate. The 697 own curation lags the publishers, and works whose citation counts have had little time to accumulate. The
698 first two shrink the counts of the recent months; the third affects only impact indicators and is treated in 698 first two shrink the counts of the recent months; the third affects only impact indicators and is treated in
699 Part~IV through fixed citation windows, which are the standard remedy for the age dependence of citation 699 Part~IV through fixed citation windows, which are the standard remedy for the age dependence of citation
700−counts \citep{wang2013window,waltman2016review}. 700+counts \citep{wang2013citationwindow,waltman2016review}.
701 701
702 For the counts, the diagnosis uses the sources against one another. The DBLP dump of 2026-11-02 holds, for 702 For the counts, the diagnosis uses the sources against one another. The DBLP dump of 2026-11-02 holds, for
703 2026, a count well below its 2025 count although ten months of the year have elapsed, which shows that DBLP's 703 2026, a count well below its 2025 count although ten months of the year have elapsed, which shows that DBLP's
@@ -740,7 +740,7 @@ reference list, presence of at least one affiliation with an institution identif
740 country for at least one author. In the eligible corpus, \PrismaEligibleMembershipHasAbstract{} works have 740 country for at least one author. In the eligible corpus, \PrismaEligibleMembershipHasAbstract{} works have
741 an abstract and \PrismaEligibleMembershipHasReferences{} have at least one resolved reference, out of 741 an abstract and \PrismaEligibleMembershipHasReferences{} have at least one resolved reference, out of
742 \PrismaCsCoreEligible{}. Both shares are lower than those reported for the DOI-bearing journal literature in 742 \PrismaCsCoreEligible{}. Both shares are lower than those reported for the DOI-bearing journal literature in
743−comparisons of OpenAlex with the commercial indexes \citep{culbert2025openalex,delgadoquiros2024completeness}, 743+comparisons of OpenAlex with the commercial indexes \citep{culbert2025openalexcoverage,delgadoquiros2024completeness},
744 which is expected in a corpus that includes dissertations, book chapters and preprints, and both fall sharply 744 which is expected in a corpus that includes dissertations, book chapters and preprints, and both fall sharply
745 for the most recent year (Figure~\ref{fig:types-openness}). The consequences are concrete. A work without an 745 for the most recent year (Figure~\ref{fig:types-openness}). The consequences are concrete. A work without an
746 abstract cannot be embedded or classified by its content and is classified from its venue, its arXiv 746 abstract cannot be embedded or classified by its content and is classified from its venue, its arXiv
@@ -840,7 +840,7 @@ None of these biases is corrected by reweighting. The study reports them, bounds
840 permits, and re-estimates its results on alternative corpora (strict core; corpus with penumbra; corpus with 840 permits, and re-estimates its results on alternative corpora (strict core; corpus with penumbra; corpus with
841 XPAC research types; corpus with DBLP-only records; corpus with generic deposits) so that the reader can see 841 XPAC research types; corpus with DBLP-only records; corpus with generic deposits) so that the reader can see
842 how far each conclusion depends on each scope decision. This is the approach that the science-of-science 842 how far each conclusion depends on each scope decision. This is the approach that the science-of-science
843−literature recommends for databases whose coverage is known to be uneven \citep{fortunato2018sos}, and it 843+literature recommends for databases whose coverage is known to be uneven \citep{fortunato2018scienceofscience}, and it
844 is the only one compatible with a mandate that forbids the fabrication of corrections. 844 is the only one compatible with a mandate that forbids the fabrication of corrections.
845 845
846 \section{Research-integrity procedures} 846 \section{Research-integrity procedures}
added tables/make_appendix_fg.py +25 −0
@@ -0,0 +1,25 @@
1+#!/usr/bin/env python3
2+"""Generate Appendix F (supplementary tables: every generated table not \\input elsewhere in the manuscript) and
3+Appendix G (figure documentation: file, caption, generating script, source artefacts) from manuscript/tables/TABLES.json and
4+figures/FIGURES.json. Run after tables/make_tables.py and figures/make_figures.py."""
5+import json, os, re, glob, sys
6+R = sys.argv[1] if len(sys.argv) > 1 else os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
7+M = os.path.join(R, "manuscript")
8+used = set()
9+for f in glob.glob(f"{M}/sections/*.tex") + [p for p in glob.glob(f"{M}/appendices/*.tex") if not p.endswith("appF_supplementary_tables.tex")]:
10+ used |= set(re.findall(r"\\input\{tables/([A-Za-z0-9_]+)\}", open(f).read()))
11+tables = json.load(open(f"{M}/tables/TABLES.json"))
12+rest = [t for t in tables if t["file"].replace(".tex", "") not in used]
13+esc = lambda s: str(s).replace("_", "\\_").replace("&", "\\&").replace("%", "\\%")
14+out = ["\\section{Supplementary tables}\\label{app:supp-tables}", "This appendix collects the generated tables not shown in the main text. Every table is produced by \\texttt{tables/make\\_tables.py} from the result file(s) named in its first comment line; none is edited by hand.", ""]
15+for t in rest:
16+ out.append(f"\\input{{tables/{t['file'].replace('.tex','')}}}\n\\clearpage")
17+open(f"{M}/appendices/appF_supplementary_tables.tex", "w").write("\n".join(out) + "\n")
18+figs = json.load(open(f"{R}/figures/FIGURES.json"))
19+g = ["\\section{Figure documentation}\\label{app:figures}", "All figures are generated by \\texttt{figures/make\\_figures.py} (matplotlib, vector PDF) with the validated palette of \\texttt{figures/style.py}; the table lists, for each figure, its caption and the result artefacts it reads. Colours follow a fixed categorical order; one axis per panel; direct labels for at most four series; the 2022-11-30 reference date is drawn as a dashed line and never as a series.", "",
20+ "\\begin{longtable}{p{0.22\\linewidth}p{0.46\\linewidth}p{0.26\\linewidth}}", "\\caption{Figure inventory.}\\label{tab:figure-inventory}\\\\", "\\toprule \\textbf{File} & \\textbf{Caption} & \\textbf{Sources} \\\\ \\midrule \\endfirsthead", "\\toprule \\textbf{File} & \\textbf{Caption} & \\textbf{Sources} \\\\ \\midrule \\endhead"]
21+for f in figs:
22+ g.append(f"\\texttt{{{esc(f['file'])}.pdf}} & {esc(f['caption'])} & {esc('; '.join(os.path.basename(s) for s in f['sources']))} \\\\")
23+g += ["\\bottomrule", "\\end{longtable}"]
24+open(f"{M}/appendices/appG_figure_documentation.tex", "w").write("\n".join(g) + "\n")
25+print(len(rest), "supplementary tables;", len(figs), "figures documented")
26
Menu

Theme