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.13.tar.gz (37.4 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.13-py3-none-any.whl (27.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: skinnerbox_source-0.4.13.tar.gz
  • Upload date:
  • Size: 37.4 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.13.tar.gz
Algorithm Hash digest
SHA256 26031033e5809b5de56510164cc2249859176f7f98b5778d30a78392db74126b
MD5 ea39095b7fa6aa09e613603990a69d56
BLAKE2b-256 a21e872457737e58806a81945496f8dfa980636070b3b81fcc44d0f5791e2a5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for skinnerbox_source-0.4.13.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.13-py3-none-any.whl.

File metadata

File hashes

Hashes for skinnerbox_source-0.4.13-py3-none-any.whl
Algorithm Hash digest
SHA256 57d95d6071a9d0f92fbd33c5491e3c55ec05986d5be6da06cc27da2cc059057c
MD5 0571495379ff80db8a5c5cba047d6d93
BLAKE2b-256 b8e4e576df15ecb053220146c7362d188292bbef7242929359adb3f56603d45a

See more details on using hashes here.

Provenance

The following attestation bundles were made for skinnerbox_source-0.4.13-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