Skip to content

JasperVanDenBosch/niprov

Repository files navigation

niprov

provenance for neuroimaging data

PyPI version Build Docs Coverage Code Quality

Research software impact DOI Twitter

Ever encountered a file of which you weren’t sure what analysis steps it had gone through? Ever wanted to know what types of data you have available for a subject in one overview? Automatically document an analysis pipeline?

Provenance is meta-data that tracks the ‘history’ of a file, and niprov is a python program to create, store and publish provenance for brain imaging files.

A list with all provenance attributes collected can be found here. Read more in the full online documentation (or pdf). For additional detailed information on image files, install nibabel,mne and/or pydicom.

Commandline Usage

Install niprov:

pip install niprov

Look for existing image files in your data directory:

provenance discover /my/data/directory

Run a transformation command and log it as provenance for the new file:

provenance record mcflirt -in t1flip_all_orig -out t1all_reg -refvol 0

Store provenance of known MEG files as an xml file:

provenance export --modality "MEG" --xml

Python API

import niprov
provenance = niprov.ProvenanceContext()

# Log an analysis step:
someAnalysisPackage.correctmotion(input='JD-fmri.nii', output='JD-fmri-3dmc.nii')
provenance.log('JD-fmri.nii', 'motion correction', ['JD-fmri-3dmc.nii'])

# Loop over images of John Smith and display a preview:
for image in provenance.get().bySubject('John Smith'):
    image.viewSnapshot() 

# Make sure two files were acquired with the same parameters:
img1.compare(img2).assertEqualProtocol()

Web browser

By running the command provenance serve you can start a mini webserver in the background, and browse images in your webbrowser:

niprov-search niprov-details niprov-pipeline