Metadata-Version: 2.1 Name: antigranular Version: 0.3.1 Summary: Antigranular is a community-driven, open-source platform that merges confidential computing and differential privacy. This creates a secure environment for handling and unlocking the full potential of unseen data.. Author: Oblivious Software Author-email: support@oblivious.ai Requires-Python: >=3.8,<4.0 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Provides-Extra: ml-frameworks Requires-Dist: ipython (>=7.34.0,<8.0.0) Requires-Dist: numpy (>=1.19.0,<2.0.0) ; python_version >= "3.8" and python_version < "3.12" Requires-Dist: numpy (>=1.26.0,<2.0.0) ; python_version >= "3.12" and python_version < "4.0" Requires-Dist: oblv-client (>=0.1.15,<0.2.0) Requires-Dist: onnx (==1.16.0) Requires-Dist: pandas (>=1.5.3,<2.0.0) ; python_version >= "3.8" and python_version < "3.12" Requires-Dist: pandas (>=2.1.4,<3.0.0) ; python_version >= "3.12" and python_version <= "4.0" Requires-Dist: pydantic (>=1.10.7,<2.0.0) Requires-Dist: requests (>=2.31.0,<3.0.0) Requires-Dist: torch (>=1.10.0,<2.0.0) ; extra == "ml-frameworks" Description-Content-Type: text/markdown #### Privacy Unleashed: Working with Antigranular Antigranular is a community-led, open-source platform that combines confidential computing with differential privacy. This integration fosters a secure environment to handle and fully utilize unseen data. ### Connect to Antigranular You can activate Antigranular using the magic command `%%ag`. Any code that follows `%%ag` will run on our remote server. This server operates under restricted conditions, allowing only methods that guarantee differential privacy. Install the Antigranular package using `pip`: ```python !pip install antigranular ``` Import the `Antigranular` library: ```python import antigranular as ag ``` To connect to the AG Enclave Server, use your client credentials and either a dataset or competition ID: ```python ag_client = ag.login(user_id="", user_secret="", competition="") ``` or ```python ag_client = ag.login(user_id="", user_secret="", dataset="") ``` A succesful login will register the cell magic `%%ag`. ### Loading Private Datasets Private datasets can be loaded as `PrivateDataFrames` and `PrivateSeries` using the `ag_utils` library. `ag_utils` is a package locally installed on the remote server, which eliminates the need to install anything other than the antigranular package. The `load_dataset()` method allows for obtaining a dictionary of private objects. The structure of the response dictionary, along with the dataset path and private object names, will be specified during the competition. ```python %%ag from op_pandas import PrivateDataFrame, PrivateSeries from ag_utils import load_dataset """ Sample response structure { train_x : priv_train_x, train_y : priv_train_y, test_x : priv_test_x } """ # Obtaining the dictionary containing private objects response = load_dataset("") # Unpacking the response dictionary train_x = response["train_x"] train_y = response["train_y"] test_x = response["test_x"] ``` ### Exporting Objects Since the code following `%%ag` runs in a highly restricted environment, it's necessary to export differentially private objects to the local environment for further analysis. The `export` method in `ag_utils` allows data objects to be exported. ##### **API info**: `export(obj, variable_name:str)` This command exports the remote object to the local environment and assigns it to the specified variable name. Note that `PrivateSeries` and `PrivateDataFrame` objects cannot be exported and will raise an error if you attempt to do so. ```python %%ag from ag_utils import export train_info = train_x.describe(eps=1) export(train_info , 'variable_name') ``` Once exported, you can perform any kind of data analysis on the differentially private object. ```python # Local code block print(variable_name) -------------------------------------- Age Salary count 99987.000000 99987.000000 mean 38.435953 120009.334336 std 12.167379 46255.486093 min 18.257448 40048.259037 25% 27.185189 80057.639960 50% 38.210860 120380.291216 75% 49.147724 159835.637091 max 59.282932 199920.664706 ``` ## Libraries Supported - **`pandas`**: An adaptable data manipulation library offering efficient data structures and tools for data analysis and manipulation. - **`op_pandas`**: A wrapped library specifically designed for differentially private data manipulation within the Pandas framework. It enhances privacy-preserving techniques and enables privacy-aware data processing. - **`op_diffprivlib`**: A differentially private library that provides various privacy-preserving algorithms and mechanisms for machine learning and data analysis tasks. - **`op_smartnoise`**: A library focused on privacy-preserving analysis using the SmartNoise framework. It provides tools for differential privacy and secure computation. - **`op_opendp`**: A library that offers differentially private data analysis and algorithms based on the OpenDP project. It provides privacy-preserving methods and tools for statistical analysis.