The narrative corpus behind morie_describe() was
excluded from the 0.3.1 tarball to get this package under 5 MB, which
left rmorie carrying the only shipped copy. rmorie has no room for it
either, so the corpus is back where it belongs, and both packages sit in
the 5-10 MB range CRAN accepts with a written justification.
The package shipped 9.2 MB, and most of the excess was duplication:
rmoriedata.sqlite (15 MB uncompressed) was retired by
the SQLite-to-Parquet migration and no shipped code reads it. Kept in
the repository, excluded from the tarball..csv.gz. load_siu_reports(format = "parquet")
now reads the store copy that morie_data_load() already
serves, so the top-level duplicate is gone. The CSV remains: it is the
default format and a genuinely different encoding, not a third copy of
the same one.describe_corpus.Rds (1.6 MB, and it does not compress)
is referenced by no R code, Rd page or test. Excluded.Verified after the change: the Parquet path, the CSV path and the
siu_directors_reports store slug all return the same 5,157
x 65 corpus.
nanoparquet is gone from Imports. The bundled store is
now read and written by this package’s own codec
(R/aaa_parquet.R), so a plain install no longer pulls a
compiled Parquet dependency, and
load_siu_reports(format = "parquet") works on a machine
that never had one – previously it turned a missing optional package
into a hard stop, despite the corpus being bundled in exactly that
format.morie_data_load("vic_<key>"); they appear in
morie_data_catalog() like any other slug.data-raw/build_vic_tables.R.morie_datasets_vic_table() defaults to
offline = TRUE, and with nothing bundled it returned a
0-row frame on any machine that had not already downloaded the
workbook.load_chicago_data(full = TRUE) gains
limit (exact row cap) and fraction (share of
the live dataset, total looked up first); bounded fetches never touch
the full-dataset cache. Network examples are now
\donttest{} with try() so they degrade
gracefully offline.
SIU corpus also bundled as Parquet;
load_siu_reports(format = "parquet") reads it via
nanoparquet (columnar / SQL-friendly). CSV remains the default (no extra
dependency).
panel_reviewed flag column (65 cols).inst/extdata/rmoriedata.sqlite (retired by the
sqlite-to-parquet migration; no shipped code read it — the loader API is
Parquet-only via nanoparquet, and the file remains backed
up outside the package). Tarball drops from 5.5 MB to 4.25 MB.AGPL (>= 3) (the LICENSE
file was a verbatim copy of the standard license, which CRAN
flags).CITATION.cff, NOTICE, and
LICENSE are excluded from the built package
(.Rbuildignore), clearing the top-level-files NOTE.LinkingTo: rmoriebricklayer (>= 0.2.0) and links the
ecosystem’s shared compiled core instead of duplicating any C code.morie_core_sha256() and
morie_core_mean() call the shared kernels directly (fast
data-integrity hashing + summaries for the integrated fixtures, with no
dependency on rmorie). Tests assert they are byte-identical to
rmoriebricklayer’s own core_sha256() /
core_mean().Six small, base-R-only helpers for analysts releasing aggregate statistics from the integrated fixtures (or any other dataset) without re-identification risk:
morie_dp_laplace_count() — (epsilon, 0)-DP count via
the Laplace mechanism (sensitivity 1).morie_dp_gaussian_mean() — approximate (epsilon,
delta)-DP mean of a bounded numeric vector via the analytic Gaussian
mechanism.morie_dp_laplace_histogram() — per-bin Laplace noise on
a histogram.morie_k_anonymity_verify() — checks k-anonymity over a
set of quasi-identifiers and returns the offending equivalence
classes.morie_l_diversity_verify() — per-class distinct-count
check on a sensitive attribute.morie_cell_suppress() — small-cell suppression with
optional complementary suppression so primary-suppressed cells can’t be
reconstructed from row/column marginals (StatCan-style).All helpers use only base R + the existing stats import;
no new runtime dependencies. Inputs are validated and edge cases (empty
vectors, NAs, out-of-bounds inputs, invalid privacy parameters) throw
informative errors.
tests/testthat/test-dp.R — Monte-Carlo convergence +
variance-scaling sanity tests for the DP mechanisms; input-validation
coverage.tests/testthat/test-k-anonymity.R — hand-built fixtures
with known equivalence-class structure; complementary-suppression
correctness.