| commit | 2abb31345f6c95944768b5222a9a5ed3fc68cc00 | [log] [tgz] |
|---|---|---|
| author | Xin Li <delphij@google.com> | Mon Apr 29 22:54:41 2024 +0000 |
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | Mon Apr 29 22:54:41 2024 +0000 |
| tree | 1a72e028104e26c068b460741dc1f954db9f1af6 | |
| parent | 1a4da2c7c66d36ec1a0624fc3817efaec52cb948 [diff] | |
| parent | ff3725fc9516fde1c3b14895dafb1baf4176229f [diff] |
[automerger skipped] Empty merge of Android 24Q2 Release (ab/11526283) to aosp-main-future am: ff3725fc95 -s ours am skip reason: Merged-In Ib929def255d9a0be566be03fec345e7724ce41fd with SHA-1 219b03e553 is already in history Original change: https://googleplex-android-review.googlesource.com/c/platform/external/rappor/+/27144228 Change-Id: Ibbd20e163b3de74301718ed30ac46c216ec24174 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
RAPPOR is a novel privacy technology that allows inferring statistics about populations while preserving the privacy of individual users.
This repository contains simulation and analysis code in Python and R.
For a detailed description of the algorithms, see the paper and links below.
Feel free to send feedback to rappor-discuss@googlegroups.com.
Although the Python and R libraries should be portable to any platform, our end-to-end demo has only been tested on Linux.
If you don't have a Linux box handy, you can view the generated output.
To setup your enviroment there are some packages and R dependencies. There is a setup script to install them: $ ./setup.sh Then to build the native components run: $ ./build.sh This compiles and tests the fastrand C extension module for Python, which speeds up the simulation.
Finally to run the demo run: $ ./demo.sh
The demo strings together the Python and R code. It:
The output is written to _tmp/regtest/results.html, and can be opened with a browser.
R analysis (analysis/R):
Demo dependencies (demo.sh):
These are necessary if you want to test changes to the code.
Python client (client/python):
rappor.py file.Platform:
To run tests:
$ ./test.sh
This currently runs Python unit tests, lints Python source files, and runs R unit tests.
rappor.py is a tiny standalone Python file, and you can easily copy it into a Python program.
NOTE: Its interface is subject to change. We are in the demo stage now, but if there's demand, we will document and publish the interface.
The R interface is also subject to change.
The fastrand C module is optional. It‘s likely only useful for simulation of thousands of clients. It doesn’t use cryptographically strong randomness, and thus should not be used in production.
analysis/
R/ # R code for analysis
cpp/ # Fast reimplementations of certain analysis
# algorithms
apps/ # Web apps to help you use RAPPOR (using Shiny)
bin/ # Command line tools for analysis.
client/ # Client libraries
python/ # Python client library
rappor.py
...
cpp/ # C++ client library
encoder.cc
...
doc/ # Documentation
tests/ # Tools for regression tests
compare_dist.R # Test helper for single variable analysis
gen_true_values.R # Generate test input
make_summary.py # Generate an HTML report for the regtest
rappor_sim.py # RAPPOR client simulation
regtest_spec.py # Specification of test cases
...
build.sh # Build scripts (docs, C extension, etc.)
demo.sh # Quick demonstration
docs.sh # Generate docs form the markdown in doc/
gh-pages/ # Where generated docs go. (A subtree of the branch gh-pages)
pipeline/ # Analysis pipeline code.
regtest.sh # End-to-end regression tests, including client
# libraries and analysis
setup.sh # Install dependencies (for Linux)
test.sh # Test runner