Skip to content

NeuroPawn bug fix + emulation + docs #2409

NeuroPawn bug fix + emulation + docs

NeuroPawn bug fix + emulation + docs #2409

Workflow file for this run

name: Run Unix
on: [push, pull_request]
jobs:
RunUnix:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
max-parallel: 4
matrix:
os: [ubuntu-20.04, macos-12]
steps:
# compile and prepare env
- name: Clone Repository
uses: actions/checkout@v2
- name: Set Version
id: version
run: if [ $GITHUB_REF_TYPE == "tag" ]; then echo "::set-output name=version::$GITHUB_REF_NAME"; else echo "::set-output name=version::$GITHUB_SHA"; fi
- name: Check Version
run: echo ${{ steps.version.outputs.version }}
- name: Install dotnet
uses: actions/setup-dotnet@v3
with:
dotnet-version: '7.0.x'
- name: Install Python 3.7
uses: actions/setup-python@v3
with:
python-version: '3.7.7'
architecture: 'x64'
- name: Install Python Dependencies
if: (matrix.os == 'ubuntu-20.04')
run: |
sudo -H apt-get update -y
sudo -H apt-get install -y python3-setuptools python3-pygments libbluetooth-dev
env:
DEBIAN_FRONTEND: noninteractive
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install Typescript
run: |
npm install -g ts-node
- name: Install Ninja
if: (matrix.os == 'macos-12')
uses: seanmiddleditch/gha-setup-ninja@master
with:
version: 1.10.2
- name: Install Julia
uses: julia-actions/setup-julia@v1
with:
version: 1.3.1
- name: Setup Cmake
uses: jwlawson/[email protected]
with:
cmake-version: '3.21.x'
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11.0.3
# build simpleble outside from brainflow because of different deployment targets
- name: Compile SimpleBLE MacOS
if: (matrix.os == 'macos-12')
run: |
mkdir $GITHUB_WORKSPACE/third_party/SimpleBLE/simpleble/build
cd $GITHUB_WORKSPACE/third_party/SimpleBLE/simpleble/build
cmake -G Ninja -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/installed -DCMAKE_BUILD_TYPE=Release ..
ninja
ninja install
- name: Compile BrainFlow MacOS
if: (matrix.os == 'macos-12')
run: |
mkdir $GITHUB_WORKSPACE/build
cd $GITHUB_WORKSPACE/build
cmake -G Ninja -DBRAINFLOW_VERSION=$BRAINFLOW_VERSION -DBUILD_ONNX=ON -DBUILD_BLUETOOTH=ON -DBUILD_TESTS=ON -DWARNINGS_AS_ERRORS=ON -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/installed -DCMAKE_BUILD_TYPE=Release ..
ninja
ninja install
env:
BRAINFLOW_VERSION: ${{ steps.version.outputs.version }}
- name: Compile BrainFlow Ubuntu
if: (matrix.os == 'ubuntu-20.04')
run: |
mkdir $GITHUB_WORKSPACE/build
cd $GITHUB_WORKSPACE/build
cmake -DBRAINFLOW_VERSION=$BRAINFLOW_VERSION -DBUILD_BLUETOOTH=ON -DBUILD_ONNX=ON -DBUILD_TESTS=ON -DWARNINGS_AS_ERRORS=ON -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/installed -DCMAKE_BUILD_TYPE=Release ..
make
make install
env:
BRAINFLOW_VERSION: ${{ steps.version.outputs.version }}
- name: Compile BrainFlow in ManyLinux
# bindings in production have to use libraries compiled inside this image!
if: (matrix.os == 'ubuntu-20.04')
run: |
docker pull dockcross/manylinux_2_28-x64:20240418-88c04a4
docker run -e BRAINFLOW_VERSION=$BRAINFLOW_VERSION -e GITHUB_WORKSPACE=$GITHUB_WORKSPACE -v $GITHUB_WORKSPACE:$GITHUB_WORKSPACE dockcross/manylinux_2_28-x64:20240418-88c04a4 /bin/bash -c "yum install -y bluez-libs-devel dbus-devel && /opt/python/cp36-cp36m/bin/pip3.6 install cmake==3.21.4 && cd $GITHUB_WORKSPACE && mkdir build_docker && cd build_docker && /opt/_internal/cpython-3.6.15/bin/cmake -DBRAINFLOW_VERSION=$BRAINFLOW_VERSION -DBUILD_ONNX=ON -DBUILD_BLE=ON -DBUILD_BLUETOOTH=ON -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/installed_docker -DCMAKE_BUILD_TYPE=Release .. && make && make install"
env:
BRAINFLOW_VERSION: ${{ steps.version.outputs.version }}
- name: C# build
run: |
cd $GITHUB_WORKSPACE/csharp_package/brainflow
dotnet restore brainflow.sln
dotnet build brainflow.sln -c Release
- name: Setup Python Package
run: |
cd $GITHUB_WORKSPACE/python_package
sudo -H python3 -m pip install -U .
- name: Build Node Package
run: |
cd $GITHUB_WORKSPACE/nodejs_package/brainflow
npm install
npm run build
- name: Install Node Tests
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm install
- name: Setup Java package
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn package
cp -av $GITHUB_WORKSPACE/java_package/brainflow/target/classes/brainflow/. $GITHUB_WORKSPACE/java_package/brainflow/target/classes/
cp -av $GITHUB_WORKSPACE/java_package/brainflow/target/classes/brainflow/. $GITHUB_WORKSPACE/java_package/brainflow/target/classes/
- name: Build Get Data Test
run: |
cd $GITHUB_WORKSPACE/cpp_package/examples/get_data
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/installed ..
make
- name: Build Signal Processing Test
run: |
cd $GITHUB_WORKSPACE/cpp_package/examples/signal_processing
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/installed ..
make
- name: Build ML Demo Test
run: |
cd $GITHUB_WORKSPACE/cpp_package/examples/ml
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/installed ..
make
- name: Install Emulator
run: |
cd $GITHUB_WORKSPACE/emulator
sudo -H python3 -m pip install -U .
- name: Install Python test Dependencies
run: sudo -H python3 -m pip install -r $GITHUB_WORKSPACE/python_package/examples/tests/requirements.txt
# start testing
- name: Run unit tests
run: $GITHUB_WORKSPACE/build/tests/brainflow_tests
- name: Synthetic C# Test MacOS
if: (matrix.os == 'macos-12')
run: |
cd $GITHUB_WORKSPACE/csharp_package/brainflow/examples/brainflow_get_data/bin/Release/net7.0
cp $GITHUB_WORKSPACE/installed/lib/libBoardController.dylib $GITHUB_WORKSPACE/csharp_package/brainflow/examples/brainflow_get_data/bin/Release/net7.0/
./brainflow_get_data --board-id -1
env:
DYLD_PRINT_LIBRARIES: 1
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
DYLD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: EEG Metrics C# Test MacOS
if: (matrix.os == 'macos-12')
run: |
cd $GITHUB_WORKSPACE/csharp_package/brainflow/examples/eeg_metrics/bin/Release/net7.0
cp $GITHUB_WORKSPACE/installed/lib/libBoardController.dylib $GITHUB_WORKSPACE/csharp_package/brainflow/examples/eeg_metrics/bin/Release/net7.0/
cp $GITHUB_WORKSPACE/installed/lib/libDataHandler.dylib $GITHUB_WORKSPACE/csharp_package/brainflow/examples/eeg_metrics/bin/Release/net7.0/
cp $GITHUB_WORKSPACE/installed/lib/libMLModule.dylib $GITHUB_WORKSPACE/csharp_package/brainflow/examples/eeg_metrics/bin/Release/net7.0/
./eeg_metrics --board-id -1
env:
DYLD_PRINT_LIBRARIES: 1
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
DYLD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Synthetic C# Test Ubuntu
if: (matrix.os == 'ubuntu-20.04')
run: |
cd $GITHUB_WORKSPACE/csharp_package/brainflow/examples/brainflow_get_data/bin/Release/net7.0
./brainflow_get_data --board-id -1
env:
DYLD_PRINT_LIBRARIES: 1
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
DYLD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: EEG Metrics C# Test Ubuntu
if: (matrix.os == 'ubuntu-20.04')
run: |
cd $GITHUB_WORKSPACE/csharp_package/brainflow/examples/eeg_metrics/bin/Release/net7.0
./eeg_metrics --board-id -1
env:
DYLD_PRINT_LIBRARIES: 1
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
DYLD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Run All Julia Tests
run: |
export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/installed/lib:$LD_LIBRARY_PATH
julia --project=$GITHUB_WORKSPACE/julia_package/brainflow -e "import Pkg; Pkg.test()"
- name: Cyton Python
run: sudo -H python3 ./emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id 0 --serial-port
- name: Cyton Python Commands
run: sudo -H python3 ./emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/cyton_commands.py --serial-port
- name: Cyton Python Markers
run: sudo -H python3 ./emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/markers.py --board-id 0 --serial-port
- name: Multiboard Python
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_multiboard_get_data.py --board-id 0 --serial-port
- name: Cyton Cpp
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/cyton_linux.py $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/brainflow_get_data --board-id 0 --serial-port
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Synthetic Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id -1
- name: Synthetic Python Multiple Buffers
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/multiple_buffers.py
- name: Synthetic Python Multiple Streamers
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/multiple_streamers.py
- name: Playback Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/playback_test.py
- name: Synthetic Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/brainflow_get_data --board-id -1
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Synthetic Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.BrainFlowGetData" -Dexec.args="--board-id -1"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Synthetic Java Markers
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.Markers" -Dexec.args="--board-id -1"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Cyton Daisy Python
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id 2 --serial-port
- name: KnightBoard Python
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/knightboard_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id 57 --serial-port
- name: Cyton Daisy Python Markers
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/markers.py --board-id 2 --serial-port
- name: Galea Cpp
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/galea_udp.py $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/brainflow_get_data --board-id 3 --ip-address 127.0.0.1
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Galea Cpp Markers
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/galea_udp.py $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/markers --board-id 3 --ip-address 127.0.0.1
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Streaming Python
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --master-board -1
- name: Streaming Python Markers
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/markers.py --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --master-board -1
- name: Denoising Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/denoising.py
- name: Serialization Python
run: |
cd $GITHUB_WORKSPACE
sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/serialization.py
- name: Python Release All
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/release_all.py
- name: Filters Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/signal_filtering.py
- name: Transforms Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/transforms.py
- name: Downsampling Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/downsampling.py
- name: ICA Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/ica.py
- name: CSP Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/csp.py
- name: Windowing Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/windowing.py
- name: MNE Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_to_mne.py
- name: BandPower Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/band_power.py
- name: BandPowerAll Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/band_power_all.py
- name: Denoising Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/denoising
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Downsampling Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/downsampling
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: CSP Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/csp
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Windowing Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/windowing
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Filters Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/signal_filtering
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Serialization Cpp
run: |
cd $GITHUB_WORKSPACE
sudo -H $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/serialization
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Transforms Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/transforms
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: BandPower Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/band_power
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Denoising Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.Denoising"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: ICA Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.ICA"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Downsampling Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.Downsampling"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: CSP Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.CSP"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Windowing Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.Windowing"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Transforms Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.Transforms"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: BandPower Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.BandPower"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: EEG Metrics Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/eeg_metrics.py --board-id -1
- name: EEG Metrics Custom Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/eeg_metrics_ci.py --board-id -1 --classifier 2 --metric 2 --model-file $GITHUB_WORKSPACE/src/ml/train/logreg_mindfulness.onnx
- name: EEG Metrics Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/ml/build/eeg_metrics --board-id -1
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: EEG Metrics Cpp Dyn Lib
if: (matrix.os == 'ubuntu-20.04')
run: $GITHUB_WORKSPACE/cpp_package/examples/ml/build/eeg_metrics_ci --board-id -1 --metric 2 --classifier 1 --model-file $GITHUB_WORKSPACE/cpp_package/examples/ml/build/libdyn_lib_test.so
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: EEG Metrics Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.EEGMetrics" -Dexec.args="--board-id -1"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Synthetic Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run brainflow_get_data
- name: Signal Filters Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run signal_filtering
- name: Serialization Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run serialization
- name: Downsampling Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run downsampling
- name: Denoising Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run denoising
- name: EEG Metrics Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run eeg_metrics
- name: BandPowerAll Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run bandpower_all
# deploy started
- name: Install AWS CLI
run: sudo -H python3 -m pip install awscli==1.21.10
- name: Push Libraries Linux Docker
if: ${{ github.event_name == 'push' && matrix.os == 'ubuntu-20.04' && github.repository == 'brainflow-dev/brainflow' }}
run: |
aws s3 cp $GITHUB_WORKSPACE/installed_docker/lib/ s3://brainflow/$GITHUB_SHA/linux --recursive
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Push Libraries MacOS Dev
if: ${{ github.event_name == 'push' && matrix.os == 'macos-12' && github.repository == 'brainflow-dev/brainflow' }}
run: |
aws s3 cp $GITHUB_WORKSPACE/installed/lib/ s3://brainflow/$GITHUB_SHA/macos_release --recursive
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}