Side Projects
Side Projects
ARMBR: A novel method for EEG blink artifact removal with minimal data requirements
ARMBR is a lightweight and easy-to-use method for blink artifact removal from EEG signals using multivariate backward regression. The algorithm detects the times at which eye blinks occur and then estimates their linear scalp projection by regressing a simplified, time-locked reference signal against the multichannel EEG. ARMBR operates robustly in both offline and real-time (online) settings, including BCI applications. The toolbox is available on the Python Package Index (PyPi): https://pypi.org/project/ARMBR and the GitHub repository https://github.com/S-Shah-Lab/ARMBR.git
SyncGenie: A programmable event synchronization device for neuroscience research
The SyncGenie is a programmable synchronization device designed for a range of uses in neuroscience research. With its default firmware, it is a configurable stand-alone “trigger box” that enables neurophysiological data to be aligned with physical stimulus events (for synchronizing visual stimuli, it now comes with a light-sensor accessory). The SyncGenie can also be re-programmed for a wide range of other applications: for example, to support both hardware-triggered and software-triggered pulse synchronization, to measure audio or video latencies, to deliver trigger pulses on uniquely custom-programmed schedules, or even to serve as a cost-effective digitizer for real-time analysis of analog signals. (https://osf.io/r9pb6/)
Subplot2Grid: A Python Toolbox
Subplot2Grid is a tool that helps you design subplot layouts and generate corresponding code. The toolbox is available on the Python Package Index (PyPi): https://pypi.org/project/Subplot2Grid/ and the GitHub repository https://github.com/ludvikalkhoury/Subplot2Grid
PyGrabIt: A Python Toolbox
PyGrabIt is a Python implementation of the Matlab GRABIT toolbox. This allows the user to extract data points from pictures. The toolbox is available on the Python Package Index (PyPi): https://pypi.org/project/PyGrabIt/ and the GitHub repository https://github.com/ludvikalkhoury/PyGrabIt
PID Controller Simulator GUI
PID controller is a name commonly given to a three-term controller. P stands for the proportional term, I for the integral term, and D for the derivative term in the controller [1]. PID controllers are probably the most widely used industrial controller. Even complex industrial control systems may comprise a control network whose main control building block is a PID control module [1].
This repository contains a MATLAB application (GUI) as well as Python code that can be used as an educational tool to understand, visualize, and test the concept of PID controllers in a real-life example. The application is inspired by the system built in [2]. In this tool, the PID controller will attempt to balance a green ball on a red moving bar. The position of the ball is measured, and the slope of the bar is modified (increased or decreased) in order to balance the green ball at a position defined by the user.
In the simulation provided in the repository, the user can control:
the initial position of the ball
the initial slope of the bar
the desired position at which the ball should top
the PID controller's gains, namely, Kp, Ki, and Kd gains that correspond to P, I, and D terms, respectively.
Link to Repository: https://github.com/ludvikalkhoury/PID-Controller-Simulation.git
Reference:
[1] Crowe, J., Chen, G. R., Ferdous, R., Greenwood, D. R., Grimble, M. J., Huang, H. P., ... & Zhang, Y. (2005). PID control: new identification and design methods. Springer-Verlag London Limited.
[2] Electronoobs. (2019, July 20). PID Balance+Ball | full explanation & tuning [Video]. YouTube. https://www.youtube.com/watch?v=JFTJ2SS4xyA
Sperm Head Segmentation and Localization using Urbano's Method
This GitHub repository provides a Python code of the segmentation and localization methods presented by Urbano et al. (2017) [1]. The main library I used in order to implement all Image Processing operations is "OpenCV." The input to the code is a semen sample and the output is the same sample with red squares around the detected heads.
Link to Repository: https://lnkd.in/ekPbez5
Reference:
[1] Urbano, L. F., Masson, P., VerMilyea, M., & Kam, M. (2016). Automatic tracking and motility analysis of human sperm in time-lapse images. IEEE transactions on medical imaging, 36(3), 792-801.
Keywords:
Urbano's segmentation and detection, Github, Python, OpenCV, image processing, binarization, sperm, head detection, video reading, video generation.
Handwritten Digit Recognition using HOG Features and SVM
Handwritten digit recognition is a well-studied problem. Various solutions to this problem are present in the literature. One solution is to extract the Histogram of Oriented Gradients (HOG) features from digits and use them (HOG features) to train a multi-class classifier such as a Support Vector Machine (SVM).
In the following repository, I provide a Matlab and a Python code, for handwritten digit classification using HOG and SVM. I used the MNIST data for training and testing.
Link to Repository: https://lnkd.in/eeJhBvu
Keywords:
Github, Python, OpenCV, image processing, HOG, SVM, machine learning, handwritten digit recognition, MNIST dataset.