Skip to content
Multichannel Igor Electrophysiology Suite
Branch: master
Clone or download
Latest commit 165462a May 11, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
HelpFiles-IP7 Update ITCXOP2 Helpfiles from upstream repository Sep 24, 2018
HelpFiles-IP8 Update ITCXOP2 Helpfiles from upstream repository Sep 24, 2018
Packages Readd compressed PXP/NWB files May 9, 2019
XOP-tango-IP7-64bit Add newly compiled tango XOP for 64bit Jan 27, 2016
XOP-tango Revert "Remove 32bit support" Mar 2, 2018
XOPs-IP7-64bit
XOPs-IP7 Add new version of MIESUtils XOP Aug 1, 2018
XOPs-IP8-64bit Add new version of MIESUtils XOP Aug 1, 2018
XOPs-IP8 Add new version of MIESUtils XOP Aug 1, 2018
tools Tools: Add Zip/Unzip version 6 from ftp://ftp.info-zip.org/pub/infozi… May 9, 2019
.gitattributes Add clean/smudge filter for large PXP/NWB files May 9, 2019
.gitignore .gitignore: Add newly create NWB file in tests Apr 23, 2019
.gitmodules Submodules: Adapt some paths Oct 3, 2018
.mailmap Add mailmap file for unified commiters in git shortlog Dec 21, 2017
CODEOWNERS Add CODEOWNERS May 10, 2019
CONTRIBUTING.md Add Contributing guide May 25, 2018
LICENSE Changed line endings of LICENSE to crlf Aug 16, 2018
ManualInstallation.md Manualinstallation: Remove section Oct 16, 2018
README.md Readme.md: Adapt link to main repository May 9, 2019
ReportingBugs.md Mention how to report bugs Jan 25, 2017
UserConfig - Template.txt ExpConfig: Add user pressure settings Dec 20, 2018
ctags.cnf ctags.cnf: Add nsis as language Jan 5, 2018

README.md

Readme

Getting MIES

Latest development version from master branch

  • git clone https://github.com/AllenInstitute/MIES
  • ./tools/initial-repo-config.sh (Requires a Git Bash shell, named Git terminal in SourceTree)

Installation

Select the installer for the latest release in the next section (Support statement). For manual installation instructions see ManualInstallation.md.

Pressure control may be implemented with ITC and/or NIDAQ hardware. For NIDAQ hardware, install the NIDAQ Tool MX package from Wavemetrics.

Depending on the bitness (64 or 32) of the Igor Pro version you plan to use (64-bit is recommended) install either version 2.2.2 of the Multiclamp Commander (64bit) or version 2.1.0.16 (32-bit). Both can be downloaded from here.

Support statement

The following versions receive fixes for all critical bugs.

Bug reporting

Please have a look at ReportingBugs.md.

Arduino

Setup

Advanced measurement modes like Yoking require an Arduino for triggering the DAC hardware. The following steps have to be performed in order to get a working setup:

  • Get an Arduino UNO, for easier PIN access a screw shield comes in handy too
  • Connect the device to the PC via USB
  • Install the Arduino studio from "Packages\Arduino\arduino-1.6.8-windows.exe"
  • Extract "Packages\Arduino\Arduino-libraries-and-sequencer.zip" into "C:\Users$username\Documents\Arduino"
  • Start Arduino studio and try connecting to the device
  • Load and compile the installed sequence "Igor_Sequencer3.ino"
  • Connect Pin 12 and GND to the trigger input of the DAC hardware

Usage

  • Connect Arduino
  • Start Arduino studio and upload "Igor_Sequencer3.ino"
  • Start Igor Pro
  • Open the panel from the Arduino menu
  • Connect
  • Upload Sequence
  • The start of DAQ is done by MIES itself

Documentation

Within the Allen Institute, the documentation can be reached at the following locations:

Building the documentation

Required 3rd party tools

Execute tools/build-documentation.sh.

Release Handling

If guidelines are not followed, the MIES version will be unknown, and data acquisition is blocked.

Cutting a new release

  • Checkout the master branch
  • Check that MIES compiles
  • Check that doxygen/sphinx/breathe returns neither errors nor warnings
  • Paste the contents of Packages\doc\releasenotes_template.rst to the top of Packages\doc\releasenotes.rst
  • Call tools\create-changelog.sh which generate a raw changelog and fill releasenotes.rst with a cleaned up version of it.
  • Tag the current state with git tag Release_X.Y_*, see git tag for how the asterisk should look like
  • Push the tag: git push --tags
  • Create the release branches:
    • git checkout -b release/X.Y
    • git push -u origin release/X.Y
    • git checkout -b release/X.Y-IVSCC
    • Patch the IVSCC branch using a commit similiar to e0a9df52 (Remove unneeded NIDAQmx.XOP, 2016-11-10)
    • git push -u origin release/X.Y-IVSCC
  • Change the bamboo jobs using release branches to use the branch release/X.Y
  • Adapt the list of supported versions above

Creating a release package manually

  • Open a git bash terminal by choosing Actions->"Open in terminal" in SourceTree
  • Checkout the release branch git checkout release/$myVersion
  • If none exists create one with git checkout -b release/$myVersion
  • Change to the tools directory in the worktree root folder
  • Execute ./create-release.sh
  • The release package including the version information is then available as zip file

Installing a release

  • Extract the zip archive into a folder on the target machine
  • Follow the steps outlined in the section "Full Installation"

Continuous integration server

Our CI server, called bamboo, provides the following services for MIES:

Automatic release package building

  • The release branch, release/$number with the highest $number, is polled every 3 minutes for changes
  • If changes are detected, a shallow clone is fetched, and inside a checked out git working tree, the release script tools/create-release.sh is executed.
  • The result of the release script, called an artifact in CI-speech, is then available as zip package from the Package section.
  • The release packaging job can only be run on a linux box (or on a windows box with git for windows installed). This is ensured by a platform requirement for the job.

Compilation testing (Igor Pro 7.x 64bit only)

The full MIES installation and the partial installations are IGOR Pro compiled using a bamboo job. This allows to catch compile time errors early on.
For testing compilation manually perform the following steps:

  • Create in User Procedures a shortcut pointing to Packages\MIES_Include.ipf and Packages\unit-testing
  • Remove the shortcut Packages\MIES_Include.ipf in Igor Procedures
  • Close all Igor Pro instances
  • Execute tools\compilation-testing\check_mies_compilation.bat
  • Watch the output

Unit testing

One of the bamboo jobs is responsible for executing our unit tests. All tests must be written using the Igor Unit Testing Framework and referenced in the main test experiment located in tools\unit-testing\RunAllTests.pxp For executing the tests manually perform the followings steps:

  • Create in User Procedures a shortcut pointing to Packages\MIES_Include.ipf, Packages\unit-testing and Packages\Testing-MIES
  • Remove the shortcut Packages\MIES_Include.ipf in Igor Procedures
  • Close all Igor Pro instances
  • Execute tools\unit-testing\autorun-test.bat
  • Watch the output

Documentation building

The documentation for the master and the latest release branch, release/$number, are automatically built by MIES-BUILD and MIES-BUILDRELEASE.

Setting up a continous integration server

Preliminaries

  • Linux box with fixed IP
  • Choose a user, here named john, for running the tests.

Enable remote access and auto login

  • Setup autologin into X for this user. E.g. for mdm add the following lines to /etc/mdm/mdm.conf:

    [daemon]
    AutomaticLoginEnable=true
    AutomaticLogin=john
    
  • Restart the PC and test that autologin works.

  • Setup remote SSH access with public keys. On the client (your PC!) try logging into using SSH. Enable port forwarding (local: 5900 to localhost:5900).

  • apt-get install gawk graphviz pandoc apache2 texlive-full tmux git x11vnc wget.

  • Checkout the mies repository

  • Copy the scripts tools/start*.sh to /home/john.

  • Open a ssh terminal, execute ~/start_x11vnc.sh and try connecting to the remote X session using e.g. TightVNC and localhost:5900 as destination address.

  • Install Multi Clamp Commander from here via env WINEPREFIX=$HOME/.wine-igor wine MultiClamp_2_2_2.exe

Install required software

  • (Relevant for Linux Mint 17 Qiana only) Add a file with the following sources in /etc/apt/sources.list.d/:

    deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu trusty main
    deb-src http://ppa.launchpad.net/openjdk-r/ppa/ubuntu trusty main
    deb http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu trusty main
    deb-src http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu trusty main
    
  • sudo apt-get update

  • sudo apt-get install wine openjdk-8-jre

  • Download and install doxygen (version 1.8.12 or later) from here.

  • pip install -U breathe sphinx sphinxcontrib-fulltoc

  • Test if building the mies documentation works.

  • Install the script tools/mies_deploy_documentation.sh as described in its file header comment.

Install Igor Pro

  • Install Igor Pro 7 using wine as described here. The last tested version was 7.01.

Setup bamboo agent

  • wget http://bamboo.corp.alleninstitute.org/agentServer/agentInstaller/atlassian-bamboo-agent-installer-5.14.1.jar
  • ~/start_bamboo_agent.sh
  • In the bamboo web app search the agents list and add the capability Igor to the newly created agent.
  • Add the line su -c /home/john/start_bamboo_agent_wrapper.sh john to /etc/rc.local. This ensures that the bamboo agent automatically starts after a reboot.
  • Reboot the PC and check that tmux attach bamboo-agent opens an existing tmux session and that the bamboo agent is running.

Bamboo jobs

  • Add bamboo jobs requiring the capability Igor.
  • Done!
You can’t perform that action at this time.