This replication package contains all data and scripts needed to reproduce results from the paper.
TL;DR: Download data-cache.zip
and run make
to regenerate
tables/figures.
Raw data is very large, however, cached Parquet files are smaller. You are
likely able to skip downloading data.zip
and can instead use
data-cache.zip
. This should be sufficient to run make
.
The scripts require Python 3, and were tested on 3.9. Earlier versions likely work.
See the requirements.txt
file for a list of required packages. These may be
installed by running:
pip install -r requirements.txt
If you need to download Boa jobs, the Boa API does require authentication. You may, however, view the jobs online: they are public.
Files are organized in the following layout:
data
data files are kept here. This includes unprocessed boa output (.txt
), and processed versions (.parquet
,.txt
)boa
contains Boa queries and snippets used. A description of the output and the snippets is available in CODEBOOK.mdanalyses
contains code used to produce figures, tables and other analyses. This is organized in acommon
directory which contains common utilities, and directories for bothjava
andkotlin
.figures
andtables
contains generated tables/figures.
The following make
targets are available:
kotlin/table-counts
orjava/table-counts
: These produce Tables Ia and Ib, respectively.kotlin/rq-usage-2
orjava/rq-usage-2
: These produce Figures 4a and 4b, respectivelykotlin/rq-usage
orjava/rq-usage
: These produce Figures 5 and 6, respectivelykotlin/rq-mutability
: This produces Figure 8.kotlin/rq-rhs-types
orjava/rq-rhs-types
: These produce Figures 7a and 7b, respectively.kotlin/rq-rhs-methodcalls
orjava/rq-rhs-methodcalls
: These produce Tables IIa and IIb, respectivelykotlin/rq-survival
orjava/rq-survival
: These produce Figures 9a and 9b, respectively