Open-source software

ipaapi

Submit datasets to QIAGEN Ingenuity Pathway Analysis from the command line — one file or several hundred. Free and open source under the MIT license.

Stable — in daily production use against live IPA

ipaapi is a command-line tool and Python package for getting data into IPA without clicking through the web client. You point it at a file — or a folder of them — say which column holds the gene identifiers and which holds the fold changes, and it uploads, creates the analyses, and tells you where they went.

It is built for the case the web client handles badly: forty differential expression tables from one experiment, each needing the same treatment, none of them laid out the way IPA's importer expects.

pip install ipaapi

01 / Problem

Why it exists

Uploading one dataset to IPA by hand is fine. Uploading thirty is a lost afternoon, and a transcription error somewhere in the middle that you will not notice until the pathway results look strange.

The obvious alternative — writing a script against the API — turns out to be harder than it looks. The API is thinly documented, and several of its more important behaviors are not written down anywhere. It will accept a submission, report success, and produce an analysis built on a fraction of your data, because a value fell outside a range it never told you about.

ipaapi exists because working all of that out took weeks. It is packaged so nobody else has to repeat it.

02 / Use

Check the mapping, then submit

Say your file has a comment line, then a header, then data:

# generated by pipeline v3
Gene,Common_name,Control_mean,Treatment_mean,Fold_change,P-value
ENSG00000229807,XIST,4.21,2.88,-1.33,0.001

validate contacts nothing and uploads nothing — it reads the file, applies your column choices, and shows you what IPA would receive:

ipaapi validate results.csv --ID 1:hugo --FC 4:logratio --skip-rows 1
results: 2,338 rows
gene id: 'Common_name' (hugo)
observations: 1
  results:
    'Fold_change' -> Log Ratio

When it looks right, submit — and if it is a folder, submit all of it:

ipaapi submit ~/experiment --pattern _DEG --ID 1:hugo --FC 4:logratio \
    --skip-rows 1 --reference-set ipkb --project MyStudy

Column positions are counted from the header row and are zero-based. Columns can be in any order, named anything, with anything you don't need in between.

03 / Behavior

What it handles so you don't have to

Most of what follows is undocumented. All of it was found by submitting real data and working backwards from the results.

04 / Install

Getting it running

pip install ipaapi
ipaapi --help

Python 3.9 or newer. Requires requests, requests-oauthlib and pandas, which pip installs for you.

You will need your own IPA license and account — ipaapi authenticates as you, via your browser, using OAuth. It stores a refresh token so you only sign in once. Headless servers are supported: authenticate on a desktop and copy the token across, or forward a browser over SSH.

ipaapi --version reports the version, where it is installed and which Python is running it, which matters when several machines are involved.

05 / Status

What is settled and what is not

The command line and the Python API are settled; breaking changes mean a major version bump. Three things are genuinely unresolved, none of which affect getting data in:

Bug reports and pull requests are welcome on GitHub. If IPA rejects something and the message doesn't explain why, that is worth reporting — most of what this package knows was learned that way.

06 / Citation

License, citation and source

MIT. Free to use, modify and redistribute, commercially or otherwise.

If it contributed to published work, please cite the archived release:

Jones, K. (2026). ipaapi: a command-line client for QIAGEN Ingenuity Pathway Analysis (v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.21940021

Zenodo credits the organization, not you. The deposited record lists its only creator as BioinformaticSolutions — the GitHub account — so anyone who uses Zenodo’s own export button will cite that rather than Jones, K. Zenodo metadata stays editable after publication; adding yourself as creator there would make the exported citation match the one above.

Source on GitHub →

Package on PyPI →

The README covers the command line in full, plus the IPA behavior documented nowhere else.

ipaapi is an independent project. It is not affiliated with, endorsed by, or supported by QIAGEN. Ingenuity Pathway Analysis is QIAGEN's product and requires a license from them. This package builds on their published python-api-demo example code.