This GitHub Organization hosts code that is developed and maintained by the members of the Neuro-Mechatronics Lab (NML) at Carnegie Mellon University.
- Repos
- Add
MATLABpackages from this table. - User Interfaces
- DS8R | (Stimulus Isolator Controller)
- 2TMSi MATLAB Streaming | (Realtime streams/recording with the squiggles etc)
- LSL GUI for TMSi MATLAB | (Can connect to realtime streams any time someone runs 2TMSi interface, as long as both computers are connected to NML Wifi router)
- MUExplorer | Interactive manual selection of MUAP waveforms - complementary with DEMUSE toolkit import/export format.
- Decomposition Export | See examples for how to export your TMSi
.poly5data to.matfile format compatible withDEMUSE. - Text Entry Prompter | Simple MATLAB GUI that lets you prompt subjects using a pre-curated list of simple phrases for text entry.
- Add
- Contributing
- Lab Wiki
- Various WTF Links:
This README is a continual work-in-progress. Please add a brief snippet and link where you feel is appropriate, if you add any repository to this organization. This is typically better to do when you are just starting a project, as that is a good time to outline documentation for how you think the code should be organized anyways.
I've tried to start moving any MATLAB "packages" (folders led with + e.g. +plot, which effectively creates a namespace for functions in those folders e.g. plot.data() for function data.m in the +plot folder).
Any such code repositories in this GitHub organization should start with the name convention matlab_package__ and should be initialized as a gitmodule with the folder name specified at the top-level of that repo (e.g. +opx for matlab_package__opx). Note that there are a couple of older repos from when I was just starting off, which do not follow this convention but to avoid making everyone's lives miserable I haven't gone back and changed the repo name.
| Name | Maintainer | Description |
|---|---|---|
| +bd | Max Murphy | MATLAB package for handling behavioral metadata such as trial success rate, trajectory curvature, etc... |
| +buf | Max Murphy | MATLAB package for efficient circle buffer using compiled mex functions. About twice as fast as MATLAB 2024 circshift. |
| +circ | Adapted by Max from Philipp Berens (MATLAB FEX originally) | Statistics package for distributions on circles. |
| +ckc | multiple | MATLAB package for organizing data for CKC, primarily meant to have pre-processing and CKC reader functions. |
| +cm | Max Murphy | Colormaps for MATLAB projects scattered throughout this organization's repos. |
| +charts | Max Murphy | MATLAB chart-classes (primarily for use with HD surface-EMG datasets). |
| +cursor | Max Murphy | MATLAB class for viewing/polling/logging Joystick cursor. |
| +default | Max Murphy | Max's favorite default overrides for MATLAB built-ins such as figure. |
| +digilent | Max Murphy | Parsing/processing for csv snippets collected using the Digilent Analog Discovery 2 in Oscilloscope mode using the Waveforms software. |
| +ds8r | Jonathan Shulgach & Max Murphy | MATLAB package gitmodule for running multiple DS8R via DAQ. |
| +enum | Max Murphy | Enumeration classes commonly used by Max. |
| +error | Max Murphy | MATLAB package gitmodule for error-handling that raises "standard" MATLAB exceptions. |
| +gui | Max Murphy | "Light-weight" GUIs (not .mlapp applications) for data curation (and presumably other purposes). |
| +io | Max Murphy | Class with "loader" or "reader" functions (particularly useful for repos that access raptor). |
| +intan | Max Murphy | Code for running the Intan RHX interface via TCP. |
| +mats | Adapted by Max from Mats et al. 2021 JNE (and elsewhere) | MATLAB package containing Mats' mystical field visualization tools. |
| +opx | Adapted by Max from Plexon | MATLAB package gitmodule for working with OmniPlex (Plexon). |
| +plot | Max Murphy | MATLAB package for different types of NML data plots. |
| +sounds | Max Murphy | Package with sound files (if initialized repo with Git-LFS) and function to play them. |
| +TMSiSAGA | Adapted by Max from TMSi | This repository contains code for the MATLAB and Python APIs compatible with Windows 10 v2.0.0 drivers and beyond for use with the TMSi SAGA data recorder. |
| +tdk | Max Murphy | This repository contains a MATLAB mex interface to the TDK vibrotactors. |
| +typewriter | Max Murphy | This repository contains code with a simple, configurable interface to prompt someone to type common phrases (Mackenzie & Soukeroff 2003) while measuring their words per minute. |
| +utils | Max Murphy | Package with generic matlab utility functions, like parameter parsing from varargin, etc. |
Different ROS2 nodes (probably in Python3) that let task-devices communicate with other environments, such as Unity.
| Name | Maintainer | Description |
|---|---|---|
| NML Bag | Andrew Whitford | A simple Python package for working with ROS2 bag files. |
| Force Dimension ROS2 package | Andrew Whitford | A ROS2 package for interfacing with Force Dimension haptics robots. |
| ROS2 Data Agent | Jonathan Shulgach | Code for a multipurpose file explorer specializing in reading ROS2 topic data from '.bag' or '.db3' files. |
| ROS2 Reward Dispenser | Jonathan Shulgach | A ROS2 package with Arduino sketches to operate a water reward system using serial commands. LED matrix display and loadcell measuring scale supported. |
If you are not familiar with git or version-control in general, it's recommended to familiarize yourself (it is a lot easier than you would think) by going here.
Please refer to this guide for how to contribute your own code.
Please refer to this guide for how to document your code contributions. If you add a repo to this GitHub organization, please follow these instructions when setting it up!