Open-source software

I spend a large chunk of my time writing open-source software (mostly in Python). Below are some of the packages I've (co-)created. Most of these were initially developed in the service of domain-specific academic projects, but several have turned out to have much broader utility.

A lightweight, object-oriented finite state machine implementation in Python. I initially wrote transitions to help manage state logic in a web-based psychology experiment I was running, but figured it would be useful elsewhere. Thanks to other folks' contributions, the package now contains a number of nice features not found in many other FSM packages--e.g., hierarchical state machines, diagrams, queued transitions, threadsafe locks, and more.

BAyesian Model-Building Interface (BAMBI) in Python. Bambi is a high-level interface for constructing Bayesian generalized linear mixed-effect models. It's built primarily on top of the PyMC3 probabilistic programming framework, but also supports an alternate Stan back-end. Originally co-created with my former postdoc Jake Westfall; currently maintained by the PyMC3 folks.

Related paper(s): Yarkoni & Westfall (2016); Capretto et al., 2020

Automated multimodal feature extraction in Python. Pliers provides a standardized API to a range of feature extraction tools and services, including a number of commercial machine learning APIs (e.g., Google Cloud Vision and Azure Cognitive Services) and Python packages (librosa, pre-trained TensorFlow models, etc.).

Related paper(s): McNamara, De la Vega, & Yarkoni (2017)

Python tools for querying and manipulating BIDS datasets. The Brain Imaging Data Structure (BIDS) is the dominant organizational format and standard in neuroimaging data analysis; PyBIDS is a collection of helpful Python modules for querying and manipulating BIDS datasets.

Related paper(s): Yarkoni et al. (2019)

Python Meta-Analysis & Regression Engine. A Python library for mixed-effects meta-regression (including meta-analysis).

Genetic algorithm-based measure abbreviation in Python. Personality measures typically contain considerable redundancy, and it's often possible to dramatically abbreviate a measure with negligible impact on validity. Precis is a Python package that uses genetic algorithms to automatically abbreviate questionnaire measures, subject to user-defined constraints.

Related paper(s): Yarkoni (2010); Eisenbarth, Lilienfeld, & Yarkoni (2015)

Python tools for automated meta-analysis of functional MRI data. Neurosynth is a framework for large-scale, automated meta-analysis of fMRI studies. This is the code behind the original framework, and still generates the images found on though it's now deprecated for public use in favor of the more comprehensive NiMARE package.

Related paper(s): Yarkoni et al. (2011)

The full-stack code for the Neurosynth web app (