# USEncrypt® Demos#

Packaged with the USEncrypt® library, we have the developed a series of software demos in the form of Jupyter notebooks, demonstrating use cases for the library across a spectrum of areas.

You can find these libraries in the `demos`

subdirectory in the source code for the library.

## Getting Started#

**USEncrypt®: Getting Started****File:**`usencrypt_getting_started.ipynb`

The basics of using the USEncrypt® library with Python. Here you can find encryption/decryption examples, simple operations with encrypted values, and simple problems with solutions to display use cases for encrypted operator computing (EOC).

**USEncrypt®: Operation Benchmarks****File:**`usencrypt_benchmarks.ipynb`

Tests that measure the runtime of functions that operate on data encrypted with the USEncrypt® library. For each operation, a simple function is defined to test their runtimes with the given sample size.

**USEncrypt®: Encrypted Boolean Operations****File:**`usencrypt_boolean_ops.ipynb`

A few examples of boolean functions running on data encrypted with the USEncrypt® library.

**USEncrypt®: Encrypted String Operations****File:**`usencrypt_string_ops.ipynb`

An introduction for using strings encrypted with the USEncrypt® library.

**USEncrypt®: Encrypted String Sorting****File:**`usencrypt_string_sorting.ipynb`

An example of sorting a list of strings encrypted with the USEncrypt® library.

## Compatibility with Other Libraries#

**USEncrypt® + NumPy: Basic Operations****File:**`usencrypt_numpy_basics.ipynb`

A collection of basic NumPy operations available for encrypted data, showcasing the USEncrypt® + NumPy compatibility.

**USEncrypt® + NumPy: Advanced Operations****File:**`usencrypt_numpy_advanced.ipynb`

A collection of advanced NumPy array and matrix operations available for encrypted data, showcasing the USEncrypt® + NumPy compatibility.

**USEncrypt® + Pandas: Basic Operations****File:**`usencrypt_pandas_basics.ipynb`

A collection of basic overloaded Pandas operations available for encrypted data, showcasing the USEncrypt® + Pandas compatibility, particularly encrypted

`DataFrame`

objects.

**USEncrypt® + Pandas: Encrypted DataFrame Search****File:**`usencrypt_pandas_search.ipynb`

An example showing how to perform a simple search on a Pandas

`DataFrame`

encrypted with the USEncrypt® library, further showcasing the benefits of the USEncrypt® + Pandas compatibility.

**USEncrypt® + Pandas: Getting Averages****File:**`usencrypt_pandas_averages.ipynb`

A simple example working with a Pandas

`DataFrame`

encrypted with the USEncrypt® library. Using USEncrypt®, Pandas, and NumPy, we are able to easily manipulate the encrypted sample Height-Weight to find the mean height and weight for each category.

## AI/ML Use Case Demos#

**Classifying Iris Flower Species with an Encrypted Neural Network****File:**`usencrypt_neural_net_iris.ipynb`

This notebook presents the classification of encrypted data with a neural network, also trained with encrypted data. Here we take a version of the Iris flower dataset encrypted with the USEncrypt® library and use our modular neural network implemented with Python’s NumPy library. The results then show a comparison in performance between classification of the regular non-encrypted Iris dataset and its encrypted version, successfully demonstrating neural network training and classification on encrypted data.

**Analyzing Diabetes Patient Progression with Encrypted Linear Regression****File:**`usencrypt_linear_regression.ipynb`

This notebook presents the use of the classic linear regression machine learning algorithm working with encrypted data. Here we take a version of Scikit-Learn’s diabetes patient dataset encrypted with the USEncrypt® library and use our linear regression algorithm implemented with Python’s NumPy library. The results then show a comparison in performance between fitting a regression model with the regular non-encrypted diabetes patient dataset and its encrypted version, successfully demonstrating it working with encrypted data.

**Exploring Convolution and Max-Pooling on Encrypted Images****File:**`usencrypt_conv_pool.ipynb`

This notebook presents both the convolution and max-pooling algorithms (which are the building blocks for convolutional neural networks in computer vision applications) working with encrypted data. Here we take a sample from the MNIST digits dataset, encrypt it with the USEncrypt® library, and perform convolution with a Gaussian blur filter and max-pooling. The results then show a comparison in performance between these algorithms used on the regular non-encrypted MNIST sample and its encrypted version, successfully demonstrating these two building blocks working properly.

**Predicting Encrypted MNIST Digits with Trained Convolutional Neural Network****File:**`usencrypt_mnist_pred.ipynb`

This notebook presents the prediction of an encrypted MNIST digit with using a trained convolutional neural network. Here we take a sample from the MNIST digits dataset, encrypt it with the USEncrypt® library, and predict its label with our trained model. The results then show successful neural network prediction using image data.

**Classifying Small Digit Images with an Encrypted Neural Network****File:**`usencrypt_neural_net_digits.ipynb`

This notebook presents the training and evaluation of Scikit-Learn’s digits dataset with an encrypted neural network. Here we take the digits dataset, encrypt it with the USEncrypt® library, train a neural network for classification, and evaluate it. This notebook then shows an example of the evaluation of the dataset (both encrypted and non-encrypted), and compares their performance.

**Assessing Bank Credit Risk with k-Means Clustering****File:**`usencrypt_kmeans_credit.ipynb`

This notebook presents the analysis of encrypted financial data using the \(k\)-means clustering algorithm. Here we take the German Credit Risk dataset, encrypt it with the USEncrypt® library, and cluster it using our implementation of \(k\)-means clustering. The results then show successful clustering using encrypted financial data.