BControl is a behavioral experimentation system that provides a flexible and extensible framework for running behavioral protocols. It is designed to support a variety of experiments with user-friendly configuration and robust MATLAB-based components.
We are undergoing a major modernization effort. Please see the Recent Refactoring Overview for details, including:
- Removal of legacy Perl scripts
- Protocol directory restructuring
- Documentation modernization
- ExperPort cleanup and optimization
- Current testing status and next steps
BControl/
├── ExperPort/ # Core system files
├── Protocols/ # Main protocols directory
├── BpodProtocols/ # Bpod-specific protocols
├── docs/ # Documentation
│ ├── guides/ # User guides and tutorials
│ ├── technical/ # Technical documentation
│ ├── hardware/ # Hardware-related setup
│ ├── architecture/ # System design and history
│ ├── recent-refactoring/# Refactoring logs and plans
│ ├── future_development/# Ideas and roadmap
│ └── old_docs/ # Archived legacy documentation
└── SoloData/ # Local data storage (excluded from version control)
This repository hosts the BControl codebase for our high-throughput behavior training facility. Some components are excluded from Git version control by design:
-
/SoloData/Contains raw data and rig-specific configuration files. ➤ Version-controlled with SVN and stored on our internal server. -
/ExperPort/Settings/Settings_Custom.confContains per-rig configuration settings. ➤ Instead, we provide a template:/ExperPort/Settings/_Settings_Custom.conf➤ After cloning, users should rename this file and customize it for their rig. -
/PASSWORD_CONFIG-DO_NOT_VERSIONCONTROL.matStores hostnames, users, and passwords. ➤ This file is version-controlled with SVN and stored internally.
git clone [email protected]:LIMLabSWC/ratter.gitbash svn_sparse_init.shThis sets up the sparse SVN checkout within the ratter directory.
Copy and rename the default config file:
cp ExperPort/Settings/_Settings_Custom.conf ExperPort/Settings/Settings_Custom.confThen edit it with your rig-specific settings.
ℹ️ Info:
See our rig setup guide for detailed instructions.
BControl is built on legacy MATLAB code and maintained through incremental patches and continuous development. Some updates are cosmetic, while others introduce core functionality.
We welcome contributions to help modernize and improve the system. You can:
- Fix small issues
- Implement proposed improvements
- Join ongoing discussions
See future development plans for active proposals.
- The
mainbranch is protected—create a feature branch for your work. - Coordinate major changes with the team.
- Document any changes and update relevant planning documents.
- Submit a pull request when ready for review.
📚 Complete documentation is available on our GitHub Pages site:
This includes all guides, technical references, hardware setup instructions, system architecture details, and refactoring information in an easy-to-navigate format.