I'm a self-taught programmer with experience dating back to the days of the ZX Spectrum.
I now code full-time, working most happily and (thankfully) most often in
Python. In my spare time I am mostly tinkering with MicroPython-powered robots.

fbs is a cross-platform PyQt5 packaging system which supports building desktop applications for Windows, Mac and Linux (Ubuntu, Fedora and Arch). Built on top of PyInstaller it wraps some of the rough edges and defines a standard project structure which allows the build process to be entirely automated. The included resource API is particularly useful, simplifying the handling of external data files, images or third-party libraries — a common pain point when bundling apps.

Dictionaries are key-value stores, meaning they store, and allow retrieval of data (or values) through a unique key. This is analogous with a real dictionary where you look up definitions (data) using a given key — the word. Unlike a language dictionary however, keys in Python dictionaries are not alphabetically sorted.

With the release of Qt 5.5 the Qt WebKit API was deprecated and replaced with the new QtWebEngine API, based on Chromium.
The WebKit API was subsequently removed from Qt entirely with the release of Qt 5.6 in mid-2016.

System tray applications (or menu bar applications) can be useful for making common functions or information available in a small number of clicks. For full desktop applications they're a useful shortcut to control apps without opening up the whole window.

A common problem when building GUI applications is "locking up" of the interface when attempting to perform long-running background tasks. In this tutorial I'll cover one of the simplest ways to achieve concurrent execution in PyQt.

Partial least squares discriminant analysis (PLS-DA) is an adaptation of PLS
regression methods to the problem of supervised1 clustering. It has seen
extensive use in the analysis of multivariate datasets, such as that derived
from NMR-based metabolomics.

1D 1H NMR is a common technique applied to metabolomic studies, being well suited
to untargeted analysis of complex biofluids. It has been successfully applied to
the classification and diagnosis of a number of diseases including [ref].

This is quick start-up guide for new users of Pathomx. Following it should give you everything
that you need to know to start using Pathomx right away. Once you've been through the basics
you might like to see some of the demos to see what Pathomx is capable of.

PyQtConfig: a simple API for handling, persisting and synchronising configuration
within PyQt applications. This module was built initially as part of the Pathomx
data analysis platform but spun out into a standalone module when it became clear it was quite useful.

Pathomx is a workflow-based data analysis tool built on IPython. It
began as a metabolomic-analysis toolkit, but has extended to support general data analysis
workflows. It aims to be simple to use for non-experts while powerful enough for complex
analysis tasks. Key to both of these goals is the ability to create 'custom tools' that
can be drag-dropped together to form larger workflows.

This notebook uses a subset of the available processing features in NMRLab (+Metabolab) to process 1D NMR spectra. The output is saved as a CSV file that can be imported into pandas, PLS_Toolbox or any other package for subsequent analysis.

MetaboHunter is a web service for automated assignment of 1D raw, bucketed or peak picked NMR spectra.
Identification is performed in comparison to two publicly available databases (HMDB, MMCD) of NMR standard measurements. More information about the algorithm is available in the published paper:

BioCyc is a Python interface to the BioCyc Web API.
Acting as a wrapper it queries the database and then presents the XML returned in a
pythonic object-based interface. Support for IPython views is included offering nice
summary tables of object attributes.

This notebook is a quick demo of a BioCyc Web API I've released for Python. While incomplete the API offers access to most basic attributes for metabolites, proteins, reactions, pathways and organisms in the database. The Python interface comes with an disk-based caching mechanism under ~/.biocyc that greatly reduces the delay (and load) for BioCyc servers.

Now we've got the classes for the data plotted, we can now plot the mean values (of the spectra). To get a style assignment for a given class we need to call .get_style_for_class() on the styles manager. This returns a useable style object that can output the keyword arguments needed to correctly style matplotlib plots.

I've just released a simple API for managing matplotlib line and marker styles for plots. It's called mplstyler and you can get it from Github or PyPi. This code is based on the style manager in Pathomx, extracted for more general use.

Below is a short snippet to implement a color-picker attached to a button in Qt. Clicking on the button pops up a dialog (native) to select a color. The color is shown by the color of the button face. A right-click option is included to allow clearing of the color setting (returning the value to None).