Here is the detailed process of installation of ApertureData Platform dependencies.


sudo apt install scons
sudo apt install libjsoncpp-dev
sudo apt install automake libtool cmake make g++
sudo apt install curl wget unzip
sudo apt install libgtest-dev libgoogle-glog-dev
sudo apt install zlib1g-dev libbz2-dev libssl-dev liblz4-dev
sudo apt install libtiff5-dev libjasper-dev libgtk-3-dev
sudo apt install ffmpeg

// Also, install one of the following for MPI
sudo apt install libopenmpi-dev
sudo apt install mpich

Install gtest

Unfortunately apt doesn’t build gtest; you need to do the following steps to get it to work correctly:

cd /usr/src/gtest/
sudo cmake CMakeLists.txt
sudo make -j
sudo cp *.a /usr/lib


Google Protobufs. Default install location is /usr/local.
git clone
cd protobuf && git checkout v3.9.0 && ./
./configure --prefix=/usr/local
make -j
sudo make install


Below are instructions for installing OpenCV v3.3.1. It may also work with newer versions of OpenCV. Download OpenCV 3.3.1.

wget -O
unzip && rm && cd opencv-3.3.0
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release \
make -j
sudo make install

Note: When using videos, and getting the following error: “Unable to stop the stream: Inappropriate ioctl for device”, you may need to include more flags when compiling OpenCV. Follow these instructions ([source](

sudo apt install ffmpeg
sudo apt install libavcodec-dev libavformat-dev libavdevice-dev

// Rebuild OpenCV with the following commands:

cd build
make -j7
sudo make install


ApertureData Platform works with TileDB v1.3.1. The directions below will help you install TileDB v1.3.1 from source. You can also follow the directions listed here.

tar xf 1.3.1.tar.gz && rm 1.3.1.tar.gz
cd TileDB-1.3.1 && mkdir build && cd build
../bootstrap --prefix=/usr/local/
make -j
sudo make install-tiledb


Facebook Faiss library for similarity search, used as alternitive engines. Download Faiss 1.4.0.

tar xf v1.4.0.tar.gz && rm v1.4.0.tar.gz
cd faiss-1.4.0 && rm CMakeLists.txt
mkdir build && cd build && cmake ../
make -j
sudo mkdir /usr/local/include/faiss/
sudo cp -r /faiss-1.4.0/* /usr/local/include/faiss/
sudo mv /faiss-1.4.0/build/lib/ /usr/local/lib/

You may need to change some flags in the CMakeFile depending on configurations on your system.

Things that we have needed to change in CMakeLists.txt: * If your system doesn’t have a GPU, make sure that BUILD_WITH_GPU is OFF * You may need to add -msse4 to set(CMAKE_CXX_FLAGS * Change the add_library call to be SHARED instead of STATIC

You can use our makefile:


This library does not offer an install. Make sure you move .h files to /usr/lib/include/faiss or /usr/local/lib/include/faiss, and make sure you make the library ( is available system-wide Or follow instructions [here](


This is a headers-only library, no compilation/installation necessary

git clone
cd valijson
sudo cp -r include/* /usr/local/include/

Persistent Memory Graph Database (PMGD)

Python Client Module

ApertureData Platform offers the Python Client Module through the pip package manager, and it is compatible with Python 2.7+ and 3.3+. pip (or pip2 and pip3) will automatically install dependencies (protobuf).

pip install vdms


git clone
// Or download a release.

cd vdms
scons [FLAGS]
Flag Description
–no-server Compiles client libraries (C++/Python) only. (will not compile neither server nor tests)
–timing Compiles server with chronos for internal timing, experimental.
-jX Compiles in parallel, using X cores
AD_PATH=path Path to the root folder containing pmgd. Default is “./” which is pmgd inside aperture data folder. Example: scons AD_PATH=/opt/ad/

Running The ApertureData Platform Server

The config.json file contains the configuration of the server. Some of the parameters include the TCP port that will be use for incoming connections, maximun number of simultaneous clients, and paths to the folders where data/metadata will be stored.

We provide a script ( that will create some default directories, corresponding the default values in the config-vdms.json.

To run the server using the default directories and port, simply run: