Skip to main content

Codes

As part of my work I often bake delicious code, and I always share my recipes. Here are some of the latest.

milad

Moment Invariants Local Atomic Descriptor

milad

Milad is a code I created as part of my research to explore ways to encode atomic environments (or any point clouds) in a rotationally invariant fingerprint that can be decoded back into the original environment (modulo global rotation.) If that sounds like something that’s up your street then check out the paper, here:

Uhrin, M. (2021). Through the eyes of a descriptor: Constructing complete, invertible, descriptions of atomic environments.

AiiDA

a scalable computational infrastructure for automated reproducible workflows and data provenance

AiiDA
Documentation

I was the principal architect of the workflow engine in AiiDA, a highly-scalable and robust workflow engine for scientific workflows. AiiDA has been used in a large number of scientific works with plugins having been written for a large number of community codes, and best of all it’s FOSS!

Papers: Uhrin et al. (2021), Huber et al. (2020).

mincePy

Python object storage with versioning made simple

mincePy
Documentation
I created mincePy because I wanted to collaborate on scientific projects as easily as it is to work together on a Google Doc, or source code in a github repository. MincePy uses MongoDB to let you store, find and keep versions of any Python object (numpy arrays, pandas DataFrames, pytorch networks, etc) in real time from anywhere in the world.

pyOS

A fresh way to interact with your python objects as though they were files

pyOS
Documentation
PyOS builds on mincePy to provide a bash-like shell where instead of files you have Python objects and instead of a local disk you are connected to a database.

kiwiPy

Robust, high-volume, message based communication made easy

kiwiPy
Documentation
paper
KiwiPy is a high-level client for RabbitMQ. It takes the pain out of creating robust message queues which are an essential part of any automated scientific workflow. Uhrin & Huber (2020).

plumPy

A python workflows library for nested processes with well defined inputs/outputs

plumPy
Documentation
PlumPy is a key component of the AiiDA workflow engine and is used to create Processes with well-defined inputs and outputs and manage their lifecycle in a robust and dependable way.