用于发布隐私保护查询和统计信息的差异私有算法和机制的可插入库

opendp-whitenoise-core的Python项目详细描述


Please note that we are renaming the toolkit and will be introducing the new name in the coming weeks.

Build Status

核心差异隐私库Python绑定

此存储库包含到Core library及其底层Rust二进制文件的python绑定。在

  • 有关此库实际运行的示例,请参阅Samples repository中的Python笔记本。在
  • 此外,请参阅随附的System repository存储库,其中包含用于区分隐私的工具。在

差别隐私是隐私保护的黄金标准。该项目旨在将学术界的理论解决方案与从现实世界部署中吸取的实际经验教训联系起来,使差异隐私在未来的部署中广泛使用。具体来说,我们提供了几个基本的构建块,可供涉及敏感数据的人员使用,其实现基于经过审查和成熟的差异隐私研究。在核心库中,我们提供了一个可插入的开放源代码库,其中包含用于发布隐私保护查询和统计信息的差异私有算法和机制,以及用于定义分析和验证器的api,用于评估这些分析并在数据集上组合总的隐私损失。在

此库为建筑分析提供了一个易于使用的界面。在

差异私有计算被指定为一个protobuf分析图,可以对其进行验证和执行,以生成差异私有的数据发布。在


关于核心Python绑定的更多信息

组件

获取库中可用的大量组件的完整列表see this documentation.

架构

核心库系统架构is described in the parent project。 此包是语言绑定的实例。语言绑定的目的是为Python提供一个简单的编程接口,用于构建和发布分析。在

用于确定组件是否释放不同私有数据的逻辑,以及噪声的缩放、属性跟踪和精度估计都由一个名为Validator的本地rust库处理。 分析中组件的实际执行由本机Rust运行时处理。在

安装

二进制文件

python3.6+的pypi上提供了初始的Linux和OS X二进制文件:

这些二进制文件已经在OSX和Ubuntu上使用,并且正在进行额外的测试。在

来源

  1. 克隆存储库

    git clone --recurse-submodules git@github.com:opendifferentialprivacy/whitenoise-core-python.git
    

    如果您已经在没有子模块的情况下克隆了存储库

    ^{pr2}$ 在
  2. 安装核心依赖项

    Mac

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    xcode-select --install
    brew install protobuf python
    

    Linux

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    sudo apt-get install diffutils gcc make m4 python
    # snap for protobuf 3, because apt comes with protobuf 2
    sudo snap install protobuf --classic
    

    Windows

    安装WSL并参考linux说明。在

  3. 安装包的实时重新加载开发人员版本

    pip3 install -r requirements/dev.txt
    pip3 install -e .
    
  4. 生成代码(核心更改时随时重新运行)
    如有必要,请参阅troubleshooting.md。在

    exportWN_DEBUG=true# optional- for faster compilation and slower execution
    python3 scripts/code_generation.py
    
  5. 生成文档(可选)

    ./scripts/build_docs.sh
    

核心文档

沟通

  • 请使用GitHub issues生成错误报告、功能请求、安装问题和想法。在
  • Gitter可用于一般聊天和在线讨论。在
  • 如有其他要求,请致电whitenoise@opendp.io与我们联系。
    • 注意:我们鼓励您使用GitHub issues,特别是对于bug。

释放和贡献

如果您在creating an issue之前遇到错误,请通知我们。在

我们感谢所有的贡献,并欢迎没有事先讨论的错误修复拉请求。在

如果您计划提供新功能,那么实用程序f功能或核心扩展,请先打开一个问题,并与我们讨论该功能。在

  • 未经讨论就发送拉取请求(PR)可能会导致PR被拒绝,因为我们可能会将核心转移到您可能意识不到的另一个方向。在

还有一个面向新开发人员的contributing guide。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在jbosseap6上部署CXF web服务时发生java错误。1.1   tablecell中的java Progressbar和标签   关于Java中此引用的问题   java如何使用下拉列表中选择的值过滤c:forEach给出的结果?   对包含其他对象的类使用BoundedMapperFacade的java Orika映射   java如何测试配置的“键”和“值”。属性文件?   java Ctrl+箭头键、多字变量名和eclipse pydev   无法通过运行索引执行基于java服务器表单的身份验证。jsp而非servlet   如何在java中使用正则表达式更改匹配子字符串的前缀和后缀   java如何安排selenium脚本在一周中的某一天的某个特定时间运行?   FileWatcher中的java溢出事件   java将堆栈大小设置为线程在安卓中似乎没有什么区别   xml为什么Java在我的XPath中添加反斜杠?   具有多个SQL语句的java MySQL ConnectorJ   为什么在eclipse中运行Java应用程序时JFrame不可见?   java正则表达式将2个字符替换为1个字符   UTC时区上的java hibernate+spring启动存储日期故障   Java未正确格式化日期   java双链接列表getData问题