Skip to main content

Source Code for the Skinner Box by Midwest UniLabs

Project description

Skinner Box

This repository contains the code for running and managing a Skinner Box experimental setup.

Table of Contents

First Time Setup

On Raspberry Pi:

  1. Download and unzip the repository on your Raspberry Pi

  2. Navigate to the project directory and run the installer script:

    $ chmod +x installer.sh
    $ ./installer.sh
    

    This will install all necessary packages and dependencies.

  3. After installation, verify that all components are working properly:

    $ python test.py
    

Installation with setup.py

For development installations or if the installer script doesn't meet your needs, you can use setup.py:

  1. Install in development mode (changes to code take effect immediately):

    $ pip install -e .
    
  2. Install as a regular package:

    $ pip install .
    
  3. Build a distribution package:

    $ python setup.py sdist bdist_wheel
    

    This creates distributable packages in the dist/ directory.

  4. Install specific dependencies:

    $ pip install -r requirements.txt
    

Note: The setup.py file automatically reads the version from "version.txt" and requirements from "requirements.txt".

Running the Application

You can run the application using either the shell script or directly with Python:

$ ./run.sh

Or:

$ python run.py

Development and Versioning

Version Control:

When merging changes with the main branch, use bump2version to increment version numbers:

$ bump2version [major|minor|patch]

Examples:

  • For major version changes: bump2version major
  • For minor feature additions: bump2version minor
  • For bug fixes: bump2version patch

Contributing:

  1. Create a feature branch from main
  2. Make your changes
  3. Run tests to ensure functionality
  4. Submit a pull request

Network Configuration

To set up the network on Raspberry Pi:

  1. Click on the network icon in the top right corner of the screen
  2. Select "Advanced Connections" → "Edit Connections" → "Wired Connection 1" → "Settings" → "IPv4 Settings"
  3. Change "Method" to "Manual"
  4. Click "Add" under "Additional Static Addresses"
  5. Open a terminal and type ifconfig to get your network information
  6. In the Network Connection dialog:
    • Address: Enter the inet address shown in the terminal (or your preferred custom value)
    • Netmask: Enter the netmask value from terminal
    • Gateway: Enter the broadcast address from terminal
  7. Click "Save" to apply changes
  8. Restart the network service:
    $ sudo service networking restart
    

Automating with Crontab

To set up automatic execution:

  1. Open a terminal and enter:

    $ crontab -e
    
  2. Select your preferred editor if prompted

  3. Add one of the following lines at the end of the file:

    • To run the script daily at 8 AM:

      0 8 * * * cd /path/to/skinner_box && ./run.sh > /path/to/skinner_box/logs/daily_run.log 2>&1
      
    • To run on system startup:

      @reboot cd /path/to/skinner_box && ./run.sh > /path/to/skinner_box/logs/startup.log 2>&1
      
  4. Save and exit the editor

Running in WSL

To run this application in a Debian WSL virtual environment:

  1. Navigate to the project directory:

    $ cd /mnt/c/Users/jacob/Documents/GitHub/skinner_box
    
  2. Create a virtual environment if you haven't already:

    $ python -m venv venv
    
  3. Activate the virtual environment:

    $ source venv/bin/activate
    
  4. Install required dependencies:

    $ pip install -r requirements.txt
    

    (If requirements.txt doesn't exist, create it or install dependencies manually)

  5. Run the application:

    $ python main.py
    

Additional Dependencies for WSL

You might need to install additional packages depending on your setup:

  • For GPIO functionality (if running on a Raspberry Pi): pip install RPi.GPIO gpiozero
  • For the Flask web app: pip install flask

Troubleshooting

Common Issues:

  1. GPIO Permission Errors: If you encounter permission issues when accessing GPIO pins, try:

    $ sudo chmod -R 777 /dev/gpiomem
    
  2. Network Connection Issues: Verify your network settings with:

    $ ping 8.8.8.8
    
  3. Application Not Starting: Check the logs in the logs/ directory

For additional help, please create an issue on the GitHub repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skinnerbox_source-0.4.12.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skinnerbox_source-0.4.12-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file skinnerbox_source-0.4.12.tar.gz.

File metadata

  • Download URL: skinnerbox_source-0.4.12.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for skinnerbox_source-0.4.12.tar.gz
Algorithm Hash digest
SHA256 c954a60ace8b7ec1bffec8adec6077b2be92502aedea32f9cfdd5110e1095ce7
MD5 506cc94dece2ad6a1cfa2dfa660b683f
BLAKE2b-256 045fcd572b5e824f2200c8fcf43154144582a5c5af0687299d59e3506b1dfcc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for skinnerbox_source-0.4.12.tar.gz:

Publisher: patch_release.yaml on MidwestUniLabs/skinner_box

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file skinnerbox_source-0.4.12-py3-none-any.whl.

File metadata

File hashes

Hashes for skinnerbox_source-0.4.12-py3-none-any.whl
Algorithm Hash digest
SHA256 ccf040c34973a1e706a420fce2619fe1d4380a8da8ae7862e5d2fade93b43a2f
MD5 57d370d9cce8397bf182187831281842
BLAKE2b-256 4a4ffd72c62d3bcce0658bc66f39d6594f5f94d1aac825f0c49ad1e9ed25221f

See more details on using hashes here.

Provenance

The following attestation bundles were made for skinnerbox_source-0.4.12-py3-none-any.whl:

Publisher: patch_release.yaml on MidwestUniLabs/skinner_box

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page