Skip to main content

Python 3 implementation of Portable Format for Analytics (PFA): producer, converter, and consumer.

Project description

Build Status PyPI - Python Version PyPI version Maintenance GitHub Twitter Follow

Data Scientist: Why is my cutting edge model still not in production?

Scenario 1:

IT Team: We are still implementing the scoring engine in Go/Java/C++.

Scenario 2:

IT Team: We are still figuring out how to read the model.pkl file you provided.

. .

and the push to production pang continues ..

New Features!

  • PFAEngine.fromPmml(pmmlDocument) support is now dropped begining v1.1.0 as its implementation was originally not matured in titus. Only 2/40 examples listed in the DMG PMML website were compatible with PFAEngine.fromPmml(pmmlDocument) in the original titus package.

Changes in titus2 v1.1.0

View the complete changelog here.

Titus 2 - Portable Format for Analytics (PFA) implementation for Python 3.4+

This is a subset-fork of the original repository which has been completely migrated to Python 3.

The Portable Format for Analytics (PFA) is a specification for scoring/inference engines: event-based processors that perform predictive or analytic calculations. It is a model interchange format which helps smoothen the transition from statistical model development to large-scale and/or online production.


Titus (Python 2) (API) was originally Open Data's complete implementation of PFA for Python. It can be used for model development as well as to execute the scoring engine. Titus 2 is a fork of Titus which is being maintained actively.


Titus 2 uses a number of open source projects to work properly:

  • avro-python3 >= 1.8.2
  • numpy >= 1.15.0
  • pytz >= 2019.1
  • pyyaml >= 5.1.2
  • ply >= 3.11

The above packages are available via pip and are automatically installed during setup.


Titus requires Python 3.4+ to run. It can be installed via pip/pip3 as follows:

$ pip install titus2

or you can directly install the latest build from github repository via

$ pip install git+

After installation please run the following elementary example in python

from titus.genpy import PFAEngine

pfa = {"input": "double",
 "output": "double",
 "action": [
   {"+": ["input", 100]}
engine, = PFAEngine.fromJson(pfa)

l = [1.0, 2.0, 3.0, 4.0, 5.0]

for num in l:
    print(num, engine.action(num))

User Guide and Tutorials

See the Hadrian wiki for user guide and tutorials.

Current Testing Framework

  • Unit testing status available here Build Status
  • Conformance testing status available here Build Status

Issues, Questions and Feature Requests

Please raise an issue/question/request here.


Want to contribute? Great!

Please raise an issue to discuss your ideas and send a pull request.


  • Write MORE Tests for scripts/*.
  • Add scikit-learn model export to PFA tutorials.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for titus2, version 1.1.0
Filename, size File type Python version Upload date Hashes
Filename, size titus2-1.1.0-py3-none-any.whl (255.7 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size titus2-1.1.0.tar.gz (226.0 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page