Python

depictr: A unified toolkit for visualising statistical models and data

Software Package Web application

A consistent, accessible visual language for statistical analysis in R and Python.

depictr: One visual language from first look to final figure

Post

Figures often change their visual language as an analysis moves from exploration to reporting. This post uses depictr to examine a simulated lexical-decision experiment, plot its mixed-model estimates, audit a figure and correct the accessibility problems that the audit finds.

lexsync: From a word-frequency corpus to an EEG-ready experiment

Post

Selecting words is only the first step in preparing a psycholinguistic experiment. This post uses lexsync to match high- and low-frequency items, balance them across lists, and export timed PsychoPy and OpenSesame scripts that send electroencephalography (EEG) triggers, plus a jsPsych version that logs event markers.

pilotr: Pilot the study before running it

Post

A simulated semantic-priming study shows how precision, sign errors, magnitude errors and singular fits can be examined alongside power before choosing a design.

scopusflow: A literature search you can rerun

Post

A literature-search export does not preserve the decisions that produced it. This post uses scopusflow to define a search in advance, resume it from checkpoints and generate a PRISMA-S search record from the resulting data.

theoryforge: A theory you can check

Post

A theory written only in prose cannot be checked mechanically. This post represents a theory of modality switching as structured data, derives the conditional independencies it implies, and tests them against data simulated from the theory and from a rival account.

theoryforge: Systematic theory development

Software Package Web application

Versioned, machine-checkable scientific theories in R and Python.

pilotr: Simulate experimental and behavioural data from a portable design specification

Software Package Web application

Simulation-based design analysis from a portable R and Python specification.

scopusflow: A reproducible workflow layer for Scopus bibliographic searches

Software Package Web application

Reproducible, quota-aware Scopus searches in R and Python.

lexsync: Lexical optimisation and hardware-timed experiment generation

Software Package Web application

Lexical stimulus matching and experiment generation in R and Python.

Secure and scalable speech transcription for local and HPC

Post

A production-ready local transcription workflow leveraging OpenAI's Whisper models that addresses the limitations of cloud-based solutions through complete data sovereignty, unlimited scale, reproducible processing and advanced quality control, while maintaining GDPR compliance.

Secure and scalable speech transcription for local and HPC

Software Pipeline

A secure, local transcription workflow using OpenAI's Whisper, with batch processing on high-performance computing (HPC) clusters and built-in quality control. Designed for academic and enterprise use, it avoids the privacy and reproducibility limitations of cloud-based services.

Prototype workflow for semi-automatic processing of speech and co-speech gestures

Post

Understanding the interplay between speech and gesture is crucial for linguistic and cognitive research. The current prototype, available on GitHub, aims to automate the analysis of temporal alignment between spoken demonstrative pronouns and pointing gestures in video recordings. By integrating computer vision (via Google’s MediaPipe) and speech recognition (using language-specific Vosk models) using Python, the workflow provides enriched video annotations and alignment data, offering valuable insights into deictic communication.

How to correctly encode triggers in Python and send them to BrainVision through serial port (useful for OpenSesame and PsychoPy)

Post

I'm sending the triggers in a binary format because Python requires this. For instance, to send the trigger 1, I run the code serialport.write(b'1'). I have succeeded in sending triggers in this way. However, I encounter two problems. First, the triggers are converted in a way I cannot entirely decipher. For instance, when I run the code serialport.write(b'1'), the trigger displayed in BrainVision Recorder is S 49, not S 1 as I would hope (please see Appendix below). Second, I cannot send two triggers with the same code one after the other. For instance, if I run serialport.write(b'1'), a trigger appears in BrainVision Recorder, but if I run the same afterwards (no matter how many times), no trigger appears. I tried to solve these problems by opening the parallel port in addition to the serial port, but the problems persist.

Assigning participant-specific parameters automatically in OpenSesame

Post

Python inline script for OpenSesame that automatically loads participant-specific parameters from a CSV file, enabling complex counterbalancing schemes beyond the standard interface options.