From ee3c7d61b636b7d91929bf765093d922b7747a58 Mon Sep 17 00:00:00 2001 From: Jan Clemens Date: Thu, 1 Feb 2024 21:34:36 +0100 Subject: [PATCH] Update documentation --- .buildinfo | 2 +- README.html | 5 +- _modules/etho/call/client.html | 3 + _modules/etho/call/client_old.html | 3 + _modules/etho/cli.html | 3 + _modules/etho/gui/app.html | 3 + _modules/etho/gui/wxBusyDialog.html | 3 + _modules/etho/gui/wxCam.html | 3 + _modules/etho/gui/wxCtrl.html | 3 + _modules/etho/gui/wxCtrl_ephys.html | 3 + _modules/etho/gui/wxCtrl_rpi.html | 3 + _modules/etho/gui/wxCtrl_vr.html | 3 + _modules/etho/gui/wxDangerDialog.html | 3 + _modules/etho/services/BLTZeroService.html | 3 + _modules/etho/services/CamZeroService.html | 3 + _modules/etho/services/DAQZeroService.html | 3 + _modules/etho/services/DLPZeroService.html | 3 + _modules/etho/services/GCMZeroService.html | 3 + .../etho/services/NICounterZeroService.html | 3 + _modules/etho/services/Opt2ZeroService.html | 3 + _modules/etho/services/RelayZeroService.html | 3 + _modules/etho/services/SndZeroService.html | 3 + .../etho/services/TemplateZeroService.html | 3 + _modules/etho/services/ThuAZeroService.html | 3 + _modules/etho/services/ThuZeroService.html | 3 + _modules/etho/services/ZeroService.html | 3 + .../etho/services/camera/spinnaker_old.html | 3 + .../etho/services/dlp/dlp_make_warpfiles.html | 3 + _modules/etho/services/dlp/dlp_runners.html | 3 + .../etho/services/utils/concurrent_task.html | 3 + .../etho/services/utils/log_exceptions.html | 3 + _modules/etho/utils/config.html | 3 + _modules/etho/utils/runner.html | 3 + _modules/etho/utils/shuffled_cycle.html | 3 + _modules/etho/utils/sound.html | 3 + _modules/etho/utils/tui.html | 3 + _modules/index.html | 3 + _sources/README.md.txt | 2 +- _static/check-solid.svg | 4 + _static/clipboard.min.js | 7 + _static/copy-button.svg | 5 + _static/copybutton.css | 94 +++++++ _static/copybutton.js | 248 ++++++++++++++++++ _static/copybutton_funcs.js | 73 ++++++ api/etho.call.client.html | 3 + api/etho.call.client_old.html | 3 + api/etho.call.ephys.html | 3 + api/etho.call.panoptikum.html | 3 + api/etho.call.rpi.html | 3 + api/etho.call.vr.html | 3 + api/etho.cli.html | 3 + api/etho.gui.CamPreview.html | 3 + api/etho.gui.ThuPreview.html | 3 + api/etho.gui.app.html | 3 + api/etho.gui.wxBusyDialog.html | 3 + api/etho.gui.wxCam.html | 3 + api/etho.gui.wxCtrl.html | 3 + api/etho.gui.wxCtrl_ephys.html | 3 + api/etho.gui.wxCtrl_rpi.html | 3 + api/etho.gui.wxCtrl_vr.html | 3 + api/etho.gui.wxDangerDialog.html | 3 + api/etho.services.BLTZeroService.html | 3 + api/etho.services.CamZeroService.html | 3 + api/etho.services.DAQZeroService.html | 3 + api/etho.services.DLPZeroService.html | 3 + api/etho.services.GCMZeroService.html | 3 + api/etho.services.NICounterZeroService.html | 3 + api/etho.services.Opt2ZeroService.html | 3 + api/etho.services.RelayZeroService.html | 3 + api/etho.services.SndZeroService.html | 3 + api/etho.services.TemplateZeroService.html | 3 + api/etho.services.ThuAZeroService.html | 3 + api/etho.services.ThuZeroService.html | 3 + api/etho.services.ZeroService.html | 3 + api/etho.services.camera.base.html | 3 + api/etho.services.camera.basler.html | 3 + api/etho.services.camera.dummy.html | 3 + api/etho.services.camera.flycapture2.html | 3 + api/etho.services.camera.hamamatsu.html | 3 + api/etho.services.camera.spinnaker.html | 3 + api/etho.services.camera.spinnaker_old.html | 3 + api/etho.services.camera.videocapture.html | 3 + api/etho.services.camera.ximea.html | 3 + api/etho.services.dlp.dlp_make_warpfiles.html | 3 + api/etho.services.dlp.dlp_runners.html | 3 + api/etho.services.utils.concurrent_task.html | 3 + api/etho.services.utils.log_exceptions.html | 3 + api/etho.utils.config.html | 3 + api/etho.utils.runner.html | 3 + api/etho.utils.shuffled_cycle.html | 3 + api/etho.utils.sound.html | 3 + api/etho.utils.tui.html | 3 + api/etho.utils.zeroclient.html | 3 + api_etho.html | 3 + callbacks.html | 3 + cli.html | 3 + configuration/calibration_led.html | 3 + configuration/calibration_speaker.html | 3 + configuration/configuration.html | 3 + configuration/global.html | 3 + configuration/playlist.html | 3 + configuration/protocol.html | 3 + genindex.html | 3 + hardware/camera.html | 3 + hardware/hardware.html | 3 + hardware/nidaq.html | 3 + hardware/projector.html | 3 + hardware/rpi.html | 3 + hardware/scanimage.html | 3 + index.html | 3 + install.html | 3 + logging.html | 3 + py-modindex.html | 3 + search.html | 3 + searchindex.js | 2 +- tutorial.html | 3 + 116 files changed, 756 insertions(+), 4 deletions(-) create mode 100644 _static/check-solid.svg create mode 100644 _static/clipboard.min.js create mode 100644 _static/copy-button.svg create mode 100644 _static/copybutton.css create mode 100644 _static/copybutton.js create mode 100644 _static/copybutton_funcs.js diff --git a/.buildinfo b/.buildinfo index fc03c90..2752023 100644 --- a/.buildinfo +++ b/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: fb8c4c863a919794fbaa987633907c63 +config: 7e6f8fd8069cdb550ad20516f5454408 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/README.html b/README.html index 202fc02..69a3af8 100644 --- a/README.html +++ b/README.html @@ -12,6 +12,7 @@ + @@ -269,7 +270,7 @@

Ethodrome documentationThe docs are published at https://janclemenslab.org/ethodrome.

Requires:

    -
  • mamba install sphinx furo sphinx-inline-tabs ghp-import myst-nb sphinx-panels -c conda-forge # need the latest version for proper light/dark mode

  • +
  • mamba install sphinx furo sphinx-inline-tabs sphinx-copybutton ghp-import myst-nb sphinx-panels -c conda-forge # need the latest version for proper light/dark mode

  • pip install sphinxcontrib-images

@@ -342,6 +343,8 @@

Publish + + diff --git a/_modules/etho/call/client.html b/_modules/etho/call/client.html index 98f8eb6..3a659f7 100644 --- a/_modules/etho/call/client.html +++ b/_modules/etho/call/client.html @@ -11,6 +11,7 @@ + @@ -691,6 +692,8 @@

Source code for etho.call.client

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/call/client_old.html b/_modules/etho/call/client_old.html
index 49e769b..cd212df 100644
--- a/_modules/etho/call/client_old.html
+++ b/_modules/etho/call/client_old.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -679,6 +680,8 @@ 

Source code for etho.call.client_old

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/cli.html b/_modules/etho/cli.html
index df6a441..ed1b124 100644
--- a/_modules/etho/cli.html
+++ b/_modules/etho/cli.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -506,6 +507,8 @@ 

Source code for etho.cli

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/gui/app.html b/_modules/etho/gui/app.html
index 5e68b89..bd1aef0 100644
--- a/_modules/etho/gui/app.html
+++ b/_modules/etho/gui/app.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -763,6 +764,8 @@ 

Source code for etho.gui.app

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/gui/wxBusyDialog.html b/_modules/etho/gui/wxBusyDialog.html
index e6599b7..d13a13e 100644
--- a/_modules/etho/gui/wxBusyDialog.html
+++ b/_modules/etho/gui/wxBusyDialog.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -355,6 +356,8 @@ 

Source code for etho.gui.wxBusyDialog

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/gui/wxCam.html b/_modules/etho/gui/wxCam.html
index 3310562..920d632 100644
--- a/_modules/etho/gui/wxCam.html
+++ b/_modules/etho/gui/wxCam.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -367,6 +368,8 @@ 

Source code for etho.gui.wxCam

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/gui/wxCtrl.html b/_modules/etho/gui/wxCtrl.html
index 364d6df..1f6080d 100644
--- a/_modules/etho/gui/wxCtrl.html
+++ b/_modules/etho/gui/wxCtrl.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -406,6 +407,8 @@ 

Source code for etho.gui.wxCtrl

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/gui/wxCtrl_ephys.html b/_modules/etho/gui/wxCtrl_ephys.html
index c9dca38..a5cd5b2 100644
--- a/_modules/etho/gui/wxCtrl_ephys.html
+++ b/_modules/etho/gui/wxCtrl_ephys.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -394,6 +395,8 @@ 

Source code for etho.gui.wxCtrl_ephys

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/gui/wxCtrl_rpi.html b/_modules/etho/gui/wxCtrl_rpi.html
index 0e6b498..2fdf568 100644
--- a/_modules/etho/gui/wxCtrl_rpi.html
+++ b/_modules/etho/gui/wxCtrl_rpi.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -424,6 +425,8 @@ 

Source code for etho.gui.wxCtrl_rpi

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/gui/wxCtrl_vr.html b/_modules/etho/gui/wxCtrl_vr.html
index a173b28..017b251 100644
--- a/_modules/etho/gui/wxCtrl_vr.html
+++ b/_modules/etho/gui/wxCtrl_vr.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -414,6 +415,8 @@ 

Source code for etho.gui.wxCtrl_vr

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/gui/wxDangerDialog.html b/_modules/etho/gui/wxDangerDialog.html
index 0381962..1a32cfb 100644
--- a/_modules/etho/gui/wxDangerDialog.html
+++ b/_modules/etho/gui/wxDangerDialog.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -409,6 +410,8 @@ 

Source code for etho.gui.wxDangerDialog

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/services/BLTZeroService.html b/_modules/etho/services/BLTZeroService.html
index 85063c7..e0186bb 100644
--- a/_modules/etho/services/BLTZeroService.html
+++ b/_modules/etho/services/BLTZeroService.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -413,6 +414,8 @@ 

Source code for etho.services.BLTZeroService


     
     
+    
+    
     
     
     
diff --git a/_modules/etho/services/CamZeroService.html b/_modules/etho/services/CamZeroService.html
index 1945ad8..e8aa8c4 100644
--- a/_modules/etho/services/CamZeroService.html
+++ b/_modules/etho/services/CamZeroService.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -466,6 +467,8 @@ 

Source code for etho.services.CamZeroService


     
     
+    
+    
     
     
     
diff --git a/_modules/etho/services/DAQZeroService.html b/_modules/etho/services/DAQZeroService.html
index 571de7b..38500c6 100644
--- a/_modules/etho/services/DAQZeroService.html
+++ b/_modules/etho/services/DAQZeroService.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -597,6 +598,8 @@ 

Source code for etho.services.DAQZeroService


     
     
+    
+    
     
     
     
diff --git a/_modules/etho/services/DLPZeroService.html b/_modules/etho/services/DLPZeroService.html
index d8936e6..beda0da 100644
--- a/_modules/etho/services/DLPZeroService.html
+++ b/_modules/etho/services/DLPZeroService.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -545,6 +546,8 @@ 

Source code for etho.services.DLPZeroService


     
     
+    
+    
     
     
     
diff --git a/_modules/etho/services/GCMZeroService.html b/_modules/etho/services/GCMZeroService.html
index fc93824..62efffb 100644
--- a/_modules/etho/services/GCMZeroService.html
+++ b/_modules/etho/services/GCMZeroService.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -546,6 +547,8 @@ 

Source code for etho.services.GCMZeroService


     
     
+    
+    
     
     
     
diff --git a/_modules/etho/services/NICounterZeroService.html b/_modules/etho/services/NICounterZeroService.html
index 8678956..4fb1026 100644
--- a/_modules/etho/services/NICounterZeroService.html
+++ b/_modules/etho/services/NICounterZeroService.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -397,6 +398,8 @@ 

Source code for etho.services.NICounterZeroService

+ + diff --git a/_modules/etho/services/Opt2ZeroService.html b/_modules/etho/services/Opt2ZeroService.html index adddf80..fde4df9 100644 --- a/_modules/etho/services/Opt2ZeroService.html +++ b/_modules/etho/services/Opt2ZeroService.html @@ -11,6 +11,7 @@ + @@ -459,6 +460,8 @@

Source code for etho.services.Opt2ZeroService

+ + diff --git a/_modules/etho/services/RelayZeroService.html b/_modules/etho/services/RelayZeroService.html index 00c0408..9e7769b 100644 --- a/_modules/etho/services/RelayZeroService.html +++ b/_modules/etho/services/RelayZeroService.html @@ -11,6 +11,7 @@ + @@ -404,6 +405,8 @@

Source code for etho.services.RelayZeroService

+ + diff --git a/_modules/etho/services/SndZeroService.html b/_modules/etho/services/SndZeroService.html index 6e07620..cded727 100644 --- a/_modules/etho/services/SndZeroService.html +++ b/_modules/etho/services/SndZeroService.html @@ -11,6 +11,7 @@ + @@ -436,6 +437,8 @@

Source code for etho.services.SndZeroService


     
     
+    
+    
     
     
     
diff --git a/_modules/etho/services/TemplateZeroService.html b/_modules/etho/services/TemplateZeroService.html
index 94eb450..a260944 100644
--- a/_modules/etho/services/TemplateZeroService.html
+++ b/_modules/etho/services/TemplateZeroService.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -403,6 +404,8 @@ 

Source code for etho.services.TemplateZeroService

+ + diff --git a/_modules/etho/services/ThuAZeroService.html b/_modules/etho/services/ThuAZeroService.html index 0e8af9d..892e935 100644 --- a/_modules/etho/services/ThuAZeroService.html +++ b/_modules/etho/services/ThuAZeroService.html @@ -11,6 +11,7 @@ + @@ -412,6 +413,8 @@

Source code for etho.services.ThuAZeroService

+ + diff --git a/_modules/etho/services/ThuZeroService.html b/_modules/etho/services/ThuZeroService.html index 19e4ee9..926de9d 100644 --- a/_modules/etho/services/ThuZeroService.html +++ b/_modules/etho/services/ThuZeroService.html @@ -11,6 +11,7 @@ + @@ -466,6 +467,8 @@

Source code for etho.services.ThuZeroService


     
     
+    
+    
     
     
     
diff --git a/_modules/etho/services/ZeroService.html b/_modules/etho/services/ZeroService.html
index 383ed29..ce76bf8 100644
--- a/_modules/etho/services/ZeroService.html
+++ b/_modules/etho/services/ZeroService.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -593,6 +594,8 @@ 

Source code for etho.services.ZeroService

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/services/camera/spinnaker_old.html b/_modules/etho/services/camera/spinnaker_old.html
index 3cbc0ca..76f6b12 100644
--- a/_modules/etho/services/camera/spinnaker_old.html
+++ b/_modules/etho/services/camera/spinnaker_old.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -624,6 +625,8 @@ 

Source code for etho.services.camera.spinnaker_old

+ + diff --git a/_modules/etho/services/dlp/dlp_make_warpfiles.html b/_modules/etho/services/dlp/dlp_make_warpfiles.html index fcf5a8e..3444ba1 100644 --- a/_modules/etho/services/dlp/dlp_make_warpfiles.html +++ b/_modules/etho/services/dlp/dlp_make_warpfiles.html @@ -11,6 +11,7 @@ + @@ -436,6 +437,8 @@

Source code for etho.services.dlp.dlp_make_warpfiles

+ + diff --git a/_modules/etho/services/dlp/dlp_runners.html b/_modules/etho/services/dlp/dlp_runners.html index c0b3017..1a1a71e 100644 --- a/_modules/etho/services/dlp/dlp_runners.html +++ b/_modules/etho/services/dlp/dlp_runners.html @@ -11,6 +11,7 @@ + @@ -543,6 +544,8 @@

Source code for etho.services.dlp.dlp_runners

+ + diff --git a/_modules/etho/services/utils/concurrent_task.html b/_modules/etho/services/utils/concurrent_task.html index a6a47cd..0e88cf8 100644 --- a/_modules/etho/services/utils/concurrent_task.html +++ b/_modules/etho/services/utils/concurrent_task.html @@ -11,6 +11,7 @@ + @@ -541,6 +542,8 @@

Source code for etho.services.utils.concurrent_task

+ + diff --git a/_modules/etho/services/utils/log_exceptions.html b/_modules/etho/services/utils/log_exceptions.html index 4f14750..1184c5b 100644 --- a/_modules/etho/services/utils/log_exceptions.html +++ b/_modules/etho/services/utils/log_exceptions.html @@ -11,6 +11,7 @@ + @@ -344,6 +345,8 @@

Source code for etho.services.utils.log_exceptions

+ + diff --git a/_modules/etho/utils/config.html b/_modules/etho/utils/config.html index b7bec0f..1635191 100644 --- a/_modules/etho/utils/config.html +++ b/_modules/etho/utils/config.html @@ -11,6 +11,7 @@ + @@ -342,6 +343,8 @@

Source code for etho.utils.config

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/utils/runner.html b/_modules/etho/utils/runner.html
index 38544fe..6576df2 100644
--- a/_modules/etho/utils/runner.html
+++ b/_modules/etho/utils/runner.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -497,6 +498,8 @@ 

Source code for etho.utils.runner

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/utils/shuffled_cycle.html b/_modules/etho/utils/shuffled_cycle.html
index d4b0efe..3a30904 100644
--- a/_modules/etho/utils/shuffled_cycle.html
+++ b/_modules/etho/utils/shuffled_cycle.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -350,6 +351,8 @@ 

Source code for etho.utils.shuffled_cycle

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/utils/sound.html b/_modules/etho/utils/sound.html
index d470c4d..b3a5812 100644
--- a/_modules/etho/utils/sound.html
+++ b/_modules/etho/utils/sound.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -644,6 +645,8 @@ 

Source code for etho.utils.sound

     
     
     
+    
+    
     
     
     
diff --git a/_modules/etho/utils/tui.html b/_modules/etho/utils/tui.html
index 6e9756d..fff9ae2 100644
--- a/_modules/etho/utils/tui.html
+++ b/_modules/etho/utils/tui.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -410,6 +411,8 @@ 

Source code for etho.utils.tui

     
     
     
+    
+    
     
     
     
diff --git a/_modules/index.html b/_modules/index.html
index b52a04f..c2fec80 100644
--- a/_modules/index.html
+++ b/_modules/index.html
@@ -11,6 +11,7 @@
     
     
     
+    
     
     
     
@@ -339,6 +340,8 @@ 

All modules for which code is available

+ + diff --git a/_sources/README.md.txt b/_sources/README.md.txt index a7aaa1f..90d22c9 100644 --- a/_sources/README.md.txt +++ b/_sources/README.md.txt @@ -4,7 +4,7 @@ The docs are published at [https://janclemenslab.org/ethodrome](). Requires: -- `mamba install sphinx furo sphinx-inline-tabs ghp-import myst-nb sphinx-panels -c conda-forge` # need the latest version for proper light/dark mode +- `mamba install sphinx furo sphinx-inline-tabs sphinx-copybutton ghp-import myst-nb sphinx-panels -c conda-forge` # need the latest version for proper light/dark mode - `pip install sphinxcontrib-images` ### Build diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 0000000..92fad4b --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 0000000..54b3c46 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 0000000..f1916ec --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 0000000..2ea7ff3 --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 0000000..dbe1aaa --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/api/etho.call.client.html b/api/etho.call.client.html index 6959c2c..7be67db 100644 --- a/api/etho.call.client.html +++ b/api/etho.call.client.html @@ -12,6 +12,7 @@ + @@ -362,6 +363,8 @@ + + diff --git a/api/etho.call.client_old.html b/api/etho.call.client_old.html index deb77de..fb0b57d 100644 --- a/api/etho.call.client_old.html +++ b/api/etho.call.client_old.html @@ -12,6 +12,7 @@ + @@ -343,6 +344,8 @@ + + diff --git a/api/etho.call.ephys.html b/api/etho.call.ephys.html index 8bf5fd4..3b20134 100644 --- a/api/etho.call.ephys.html +++ b/api/etho.call.ephys.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.call.panoptikum.html b/api/etho.call.panoptikum.html index 37fab93..dec574e 100644 --- a/api/etho.call.panoptikum.html +++ b/api/etho.call.panoptikum.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.call.rpi.html b/api/etho.call.rpi.html index 6c8bc06..f623303 100644 --- a/api/etho.call.rpi.html +++ b/api/etho.call.rpi.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.call.vr.html b/api/etho.call.vr.html index 67abeb5..bbfa092 100644 --- a/api/etho.call.vr.html +++ b/api/etho.call.vr.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.cli.html b/api/etho.cli.html index b9bcad1..c4ca844 100644 --- a/api/etho.cli.html +++ b/api/etho.cli.html @@ -12,6 +12,7 @@ + @@ -351,6 +352,8 @@ + + diff --git a/api/etho.gui.CamPreview.html b/api/etho.gui.CamPreview.html index 9712f52..cd1fb24 100644 --- a/api/etho.gui.CamPreview.html +++ b/api/etho.gui.CamPreview.html @@ -12,6 +12,7 @@ + @@ -327,6 +328,8 @@ + + diff --git a/api/etho.gui.ThuPreview.html b/api/etho.gui.ThuPreview.html index 81fe380..06fcbf5 100644 --- a/api/etho.gui.ThuPreview.html +++ b/api/etho.gui.ThuPreview.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.gui.app.html b/api/etho.gui.app.html index fea882e..54fc030 100644 --- a/api/etho.gui.app.html +++ b/api/etho.gui.app.html @@ -12,6 +12,7 @@ + @@ -389,6 +390,8 @@ + + diff --git a/api/etho.gui.wxBusyDialog.html b/api/etho.gui.wxBusyDialog.html index d68c879..ac66cbc 100644 --- a/api/etho.gui.wxBusyDialog.html +++ b/api/etho.gui.wxBusyDialog.html @@ -12,6 +12,7 @@ + @@ -334,6 +335,8 @@ + + diff --git a/api/etho.gui.wxCam.html b/api/etho.gui.wxCam.html index bde598c..e5eeb47 100644 --- a/api/etho.gui.wxCam.html +++ b/api/etho.gui.wxCam.html @@ -12,6 +12,7 @@ + @@ -334,6 +335,8 @@ + + diff --git a/api/etho.gui.wxCtrl.html b/api/etho.gui.wxCtrl.html index 9166336..80eb491 100644 --- a/api/etho.gui.wxCtrl.html +++ b/api/etho.gui.wxCtrl.html @@ -12,6 +12,7 @@ + @@ -330,6 +331,8 @@ + + diff --git a/api/etho.gui.wxCtrl_ephys.html b/api/etho.gui.wxCtrl_ephys.html index b6ce32d..bc80310 100644 --- a/api/etho.gui.wxCtrl_ephys.html +++ b/api/etho.gui.wxCtrl_ephys.html @@ -12,6 +12,7 @@ + @@ -330,6 +331,8 @@ + + diff --git a/api/etho.gui.wxCtrl_rpi.html b/api/etho.gui.wxCtrl_rpi.html index f4a9969..c6649fe 100644 --- a/api/etho.gui.wxCtrl_rpi.html +++ b/api/etho.gui.wxCtrl_rpi.html @@ -12,6 +12,7 @@ + @@ -330,6 +331,8 @@ + + diff --git a/api/etho.gui.wxCtrl_vr.html b/api/etho.gui.wxCtrl_vr.html index 1f8ceba..0af709c 100644 --- a/api/etho.gui.wxCtrl_vr.html +++ b/api/etho.gui.wxCtrl_vr.html @@ -12,6 +12,7 @@ + @@ -330,6 +331,8 @@ + + diff --git a/api/etho.gui.wxDangerDialog.html b/api/etho.gui.wxDangerDialog.html index 6e39db8..758902d 100644 --- a/api/etho.gui.wxDangerDialog.html +++ b/api/etho.gui.wxDangerDialog.html @@ -12,6 +12,7 @@ + @@ -334,6 +335,8 @@ + + diff --git a/api/etho.services.BLTZeroService.html b/api/etho.services.BLTZeroService.html index 0e027c6..718654b 100644 --- a/api/etho.services.BLTZeroService.html +++ b/api/etho.services.BLTZeroService.html @@ -12,6 +12,7 @@ + @@ -356,6 +357,8 @@ + + diff --git a/api/etho.services.CamZeroService.html b/api/etho.services.CamZeroService.html index 4b61643..d0494e0 100644 --- a/api/etho.services.CamZeroService.html +++ b/api/etho.services.CamZeroService.html @@ -12,6 +12,7 @@ + @@ -362,6 +363,8 @@ + + diff --git a/api/etho.services.DAQZeroService.html b/api/etho.services.DAQZeroService.html index 09c3dea..9d0385c 100644 --- a/api/etho.services.DAQZeroService.html +++ b/api/etho.services.DAQZeroService.html @@ -12,6 +12,7 @@ + @@ -357,6 +358,8 @@ + + diff --git a/api/etho.services.DLPZeroService.html b/api/etho.services.DLPZeroService.html index 5120777..d91c718 100644 --- a/api/etho.services.DLPZeroService.html +++ b/api/etho.services.DLPZeroService.html @@ -12,6 +12,7 @@ + @@ -356,6 +357,8 @@ + + diff --git a/api/etho.services.GCMZeroService.html b/api/etho.services.GCMZeroService.html index db160d3..c6cd72b 100644 --- a/api/etho.services.GCMZeroService.html +++ b/api/etho.services.GCMZeroService.html @@ -12,6 +12,7 @@ + @@ -356,6 +357,8 @@ + + diff --git a/api/etho.services.NICounterZeroService.html b/api/etho.services.NICounterZeroService.html index 5b7cfdc..0021c6b 100644 --- a/api/etho.services.NICounterZeroService.html +++ b/api/etho.services.NICounterZeroService.html @@ -12,6 +12,7 @@ + @@ -357,6 +358,8 @@ + + diff --git a/api/etho.services.Opt2ZeroService.html b/api/etho.services.Opt2ZeroService.html index 0a5b99a..3c98f65 100644 --- a/api/etho.services.Opt2ZeroService.html +++ b/api/etho.services.Opt2ZeroService.html @@ -12,6 +12,7 @@ + @@ -359,6 +360,8 @@ + + diff --git a/api/etho.services.RelayZeroService.html b/api/etho.services.RelayZeroService.html index 53182f9..95e7fb9 100644 --- a/api/etho.services.RelayZeroService.html +++ b/api/etho.services.RelayZeroService.html @@ -12,6 +12,7 @@ + @@ -359,6 +360,8 @@ + + diff --git a/api/etho.services.SndZeroService.html b/api/etho.services.SndZeroService.html index 30679fd..760a2ab 100644 --- a/api/etho.services.SndZeroService.html +++ b/api/etho.services.SndZeroService.html @@ -12,6 +12,7 @@ + @@ -356,6 +357,8 @@ + + diff --git a/api/etho.services.TemplateZeroService.html b/api/etho.services.TemplateZeroService.html index 9128c92..cb1116b 100644 --- a/api/etho.services.TemplateZeroService.html +++ b/api/etho.services.TemplateZeroService.html @@ -12,6 +12,7 @@ + @@ -356,6 +357,8 @@ + + diff --git a/api/etho.services.ThuAZeroService.html b/api/etho.services.ThuAZeroService.html index 3b0a33a..80f6db8 100644 --- a/api/etho.services.ThuAZeroService.html +++ b/api/etho.services.ThuAZeroService.html @@ -12,6 +12,7 @@ + @@ -358,6 +359,8 @@ + + diff --git a/api/etho.services.ThuZeroService.html b/api/etho.services.ThuZeroService.html index 172219a..43bd83e 100644 --- a/api/etho.services.ThuZeroService.html +++ b/api/etho.services.ThuZeroService.html @@ -12,6 +12,7 @@ + @@ -358,6 +359,8 @@ + + diff --git a/api/etho.services.ZeroService.html b/api/etho.services.ZeroService.html index 0fa550e..9dd00d4 100644 --- a/api/etho.services.ZeroService.html +++ b/api/etho.services.ZeroService.html @@ -12,6 +12,7 @@ + @@ -401,6 +402,8 @@ + + diff --git a/api/etho.services.camera.base.html b/api/etho.services.camera.base.html index 7f0785b..2cc8862 100644 --- a/api/etho.services.camera.base.html +++ b/api/etho.services.camera.base.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.services.camera.basler.html b/api/etho.services.camera.basler.html index eeef0e0..fa75589 100644 --- a/api/etho.services.camera.basler.html +++ b/api/etho.services.camera.basler.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.services.camera.dummy.html b/api/etho.services.camera.dummy.html index b686627..9a2f703 100644 --- a/api/etho.services.camera.dummy.html +++ b/api/etho.services.camera.dummy.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.services.camera.flycapture2.html b/api/etho.services.camera.flycapture2.html index aad82d4..c551696 100644 --- a/api/etho.services.camera.flycapture2.html +++ b/api/etho.services.camera.flycapture2.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.services.camera.hamamatsu.html b/api/etho.services.camera.hamamatsu.html index 395fc9e..366fdd4 100644 --- a/api/etho.services.camera.hamamatsu.html +++ b/api/etho.services.camera.hamamatsu.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.services.camera.spinnaker.html b/api/etho.services.camera.spinnaker.html index 1c9c30a..a54cec6 100644 --- a/api/etho.services.camera.spinnaker.html +++ b/api/etho.services.camera.spinnaker.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.services.camera.spinnaker_old.html b/api/etho.services.camera.spinnaker_old.html index b78217d..021c0d1 100644 --- a/api/etho.services.camera.spinnaker_old.html +++ b/api/etho.services.camera.spinnaker_old.html @@ -12,6 +12,7 @@ + @@ -369,6 +370,8 @@ + + diff --git a/api/etho.services.camera.videocapture.html b/api/etho.services.camera.videocapture.html index 81e0428..296fe38 100644 --- a/api/etho.services.camera.videocapture.html +++ b/api/etho.services.camera.videocapture.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.services.camera.ximea.html b/api/etho.services.camera.ximea.html index 7b3d8d3..c7203cf 100644 --- a/api/etho.services.camera.ximea.html +++ b/api/etho.services.camera.ximea.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api/etho.services.dlp.dlp_make_warpfiles.html b/api/etho.services.dlp.dlp_make_warpfiles.html index 8c68182..f82ebf5 100644 --- a/api/etho.services.dlp.dlp_make_warpfiles.html +++ b/api/etho.services.dlp.dlp_make_warpfiles.html @@ -12,6 +12,7 @@ + @@ -373,6 +374,8 @@ + + diff --git a/api/etho.services.dlp.dlp_runners.html b/api/etho.services.dlp.dlp_runners.html index b5ac16f..63a5c47 100644 --- a/api/etho.services.dlp.dlp_runners.html +++ b/api/etho.services.dlp.dlp_runners.html @@ -12,6 +12,7 @@ + @@ -517,6 +518,8 @@ + + diff --git a/api/etho.services.utils.concurrent_task.html b/api/etho.services.utils.concurrent_task.html index 0085b2a..81452cf 100644 --- a/api/etho.services.utils.concurrent_task.html +++ b/api/etho.services.utils.concurrent_task.html @@ -12,6 +12,7 @@ + @@ -422,6 +423,8 @@ + + diff --git a/api/etho.services.utils.log_exceptions.html b/api/etho.services.utils.log_exceptions.html index c48b54a..67cb717 100644 --- a/api/etho.services.utils.log_exceptions.html +++ b/api/etho.services.utils.log_exceptions.html @@ -12,6 +12,7 @@ + @@ -338,6 +339,8 @@ + + diff --git a/api/etho.utils.config.html b/api/etho.utils.config.html index 9fccf6f..0421afd 100644 --- a/api/etho.utils.config.html +++ b/api/etho.utils.config.html @@ -12,6 +12,7 @@ + @@ -331,6 +332,8 @@ + + diff --git a/api/etho.utils.runner.html b/api/etho.utils.runner.html index 4d4c243..4aa00b4 100644 --- a/api/etho.utils.runner.html +++ b/api/etho.utils.runner.html @@ -12,6 +12,7 @@ + @@ -408,6 +409,8 @@ + + diff --git a/api/etho.utils.shuffled_cycle.html b/api/etho.utils.shuffled_cycle.html index 28aa45e..a91f9eb 100644 --- a/api/etho.utils.shuffled_cycle.html +++ b/api/etho.utils.shuffled_cycle.html @@ -12,6 +12,7 @@ + @@ -343,6 +344,8 @@ + + diff --git a/api/etho.utils.sound.html b/api/etho.utils.sound.html index 228ebc1..94bfc34 100644 --- a/api/etho.utils.sound.html +++ b/api/etho.utils.sound.html @@ -12,6 +12,7 @@ + @@ -434,6 +435,8 @@ + + diff --git a/api/etho.utils.tui.html b/api/etho.utils.tui.html index 6eff341..15f1282 100644 --- a/api/etho.utils.tui.html +++ b/api/etho.utils.tui.html @@ -12,6 +12,7 @@ + @@ -345,6 +346,8 @@ + + diff --git a/api/etho.utils.zeroclient.html b/api/etho.utils.zeroclient.html index caa55a5..1194361 100644 --- a/api/etho.utils.zeroclient.html +++ b/api/etho.utils.zeroclient.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@ + + diff --git a/api_etho.html b/api_etho.html index a4d9a74..f898296 100644 --- a/api_etho.html +++ b/api_etho.html @@ -12,6 +12,7 @@ + @@ -483,6 +484,8 @@ + + diff --git a/callbacks.html b/callbacks.html index 6d5c802..1c32004 100644 --- a/callbacks.html +++ b/callbacks.html @@ -12,6 +12,7 @@ + @@ -362,6 +363,8 @@

Anatomy of a callback (make your own) + + diff --git a/cli.html b/cli.html index ecf5c4b..ad888b9 100644 --- a/cli.html +++ b/cli.html @@ -12,6 +12,7 @@ + @@ -514,6 +515,8 @@

Display system, version, and hardware info + + diff --git a/configuration/calibration_led.html b/configuration/calibration_led.html index 7d5131a..b0d1536 100644 --- a/configuration/calibration_led.html +++ b/configuration/calibration_led.html @@ -12,6 +12,7 @@ + @@ -327,6 +328,8 @@

LED calibration + + diff --git a/configuration/calibration_speaker.html b/configuration/calibration_speaker.html index 17c0a7c..f954a1d 100644 --- a/configuration/calibration_speaker.html +++ b/configuration/calibration_speaker.html @@ -12,6 +12,7 @@ + @@ -406,6 +407,8 @@

Analyze the results + + diff --git a/configuration/configuration.html b/configuration/configuration.html index bcf843f..70529bd 100644 --- a/configuration/configuration.html +++ b/configuration/configuration.html @@ -12,6 +12,7 @@ + @@ -335,6 +336,8 @@ + + diff --git a/configuration/global.html b/configuration/global.html index 002aaaf..407e1f9 100644 --- a/configuration/global.html +++ b/configuration/global.html @@ -12,6 +12,7 @@ + @@ -407,6 +408,8 @@

For RPI + + diff --git a/configuration/playlist.html b/configuration/playlist.html index b5c159f..15f60d2 100644 --- a/configuration/playlist.html +++ b/configuration/playlist.html @@ -12,6 +12,7 @@ + @@ -487,6 +488,8 @@

Parsing + + diff --git a/configuration/protocol.html b/configuration/protocol.html index 5d9e6fe..2108c24 100644 --- a/configuration/protocol.html +++ b/configuration/protocol.html @@ -12,6 +12,7 @@ + @@ -453,6 +454,8 @@

Parse + + diff --git a/genindex.html b/genindex.html index 26eb30b..1b87745 100644 --- a/genindex.html +++ b/genindex.html @@ -10,6 +10,7 @@ + @@ -1232,6 +1233,8 @@

V

+ + diff --git a/hardware/camera.html b/hardware/camera.html index 4b65325..cf5e8a5 100644 --- a/hardware/camera.html +++ b/hardware/camera.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@

Cameras + + diff --git a/hardware/hardware.html b/hardware/hardware.html index 5892529..e1dec10 100644 --- a/hardware/hardware.html +++ b/hardware/hardware.html @@ -12,6 +12,7 @@ + @@ -328,6 +329,8 @@ + + diff --git a/hardware/nidaq.html b/hardware/nidaq.html index 539af79..8a155d2 100644 --- a/hardware/nidaq.html +++ b/hardware/nidaq.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@

National Instruments DAQmx cards + + diff --git a/hardware/projector.html b/hardware/projector.html index 5e2f520..ec28934 100644 --- a/hardware/projector.html +++ b/hardware/projector.html @@ -12,6 +12,7 @@ + @@ -326,6 +327,8 @@

DLP projector + + diff --git a/hardware/rpi.html b/hardware/rpi.html index dd87cb8..e4c1998 100644 --- a/hardware/rpi.html +++ b/hardware/rpi.html @@ -12,6 +12,7 @@ + @@ -328,6 +329,8 @@

Raspberry PI + + diff --git a/hardware/scanimage.html b/hardware/scanimage.html index efc316b..3b26e2b 100644 --- a/hardware/scanimage.html +++ b/hardware/scanimage.html @@ -12,6 +12,7 @@ + @@ -367,6 +368,8 @@

Stimulus control + + diff --git a/index.html b/index.html index 2230e24..9ef8ef7 100644 --- a/index.html +++ b/index.html @@ -12,6 +12,7 @@ + @@ -318,6 +319,8 @@

Etho documentation + + diff --git a/install.html b/install.html index 6f07230..c7ffffe 100644 --- a/install.html +++ b/install.html @@ -12,6 +12,7 @@ + @@ -429,6 +430,8 @@

Optional packages (hardware, software) + + diff --git a/logging.html b/logging.html index 698c5a2..fd3101f 100644 --- a/logging.html +++ b/logging.html @@ -12,6 +12,7 @@ + @@ -329,6 +330,8 @@

Logging + + diff --git a/py-modindex.html b/py-modindex.html index 0c6e933..cea7d87 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -10,6 +10,7 @@ + @@ -617,6 +618,8 @@

Python Module Index

+ + diff --git a/search.html b/search.html index 496c228..0c38790 100644 --- a/search.html +++ b/search.html @@ -9,6 +9,7 @@ + @@ -313,6 +314,8 @@ + + diff --git a/searchindex.js b/searchindex.js index 9452ca6..a8466ab 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["README","api/etho.call.client","api/etho.call.client_old","api/etho.call.ephys","api/etho.call.panoptikum","api/etho.call.rpi","api/etho.call.vr","api/etho.cli","api/etho.gui.CamPreview","api/etho.gui.ThuPreview","api/etho.gui.app","api/etho.gui.wxBusyDialog","api/etho.gui.wxCam","api/etho.gui.wxCtrl","api/etho.gui.wxCtrl_ephys","api/etho.gui.wxCtrl_rpi","api/etho.gui.wxCtrl_vr","api/etho.gui.wxDangerDialog","api/etho.services.BLTZeroService","api/etho.services.CamZeroService","api/etho.services.DAQZeroService","api/etho.services.DLPZeroService","api/etho.services.GCMZeroService","api/etho.services.NICounterZeroService","api/etho.services.Opt2ZeroService","api/etho.services.RelayZeroService","api/etho.services.SndZeroService","api/etho.services.TemplateZeroService","api/etho.services.ThuAZeroService","api/etho.services.ThuZeroService","api/etho.services.ZeroService","api/etho.services.camera.base","api/etho.services.camera.basler","api/etho.services.camera.dummy","api/etho.services.camera.flycapture2","api/etho.services.camera.hamamatsu","api/etho.services.camera.spinnaker","api/etho.services.camera.spinnaker_old","api/etho.services.camera.videocapture","api/etho.services.camera.ximea","api/etho.services.dlp.dlp_make_warpfiles","api/etho.services.dlp.dlp_runners","api/etho.services.utils.concurrent_task","api/etho.services.utils.log_exceptions","api/etho.utils.config","api/etho.utils.runner","api/etho.utils.shuffled_cycle","api/etho.utils.sound","api/etho.utils.tui","api/etho.utils.zeroclient","api_etho","callbacks","cli","configuration/calibration_led","configuration/calibration_speaker","configuration/configuration","configuration/global","configuration/playlist","configuration/protocol","hardware/camera","hardware/hardware","hardware/nidaq","hardware/projector","hardware/rpi","hardware/scanimage","index","install","logging","tutorial"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["README.md","api/etho.call.client.rst","api/etho.call.client_old.rst","api/etho.call.ephys.rst","api/etho.call.panoptikum.rst","api/etho.call.rpi.rst","api/etho.call.vr.rst","api/etho.cli.rst","api/etho.gui.CamPreview.rst","api/etho.gui.ThuPreview.rst","api/etho.gui.app.rst","api/etho.gui.wxBusyDialog.rst","api/etho.gui.wxCam.rst","api/etho.gui.wxCtrl.rst","api/etho.gui.wxCtrl_ephys.rst","api/etho.gui.wxCtrl_rpi.rst","api/etho.gui.wxCtrl_vr.rst","api/etho.gui.wxDangerDialog.rst","api/etho.services.BLTZeroService.rst","api/etho.services.CamZeroService.rst","api/etho.services.DAQZeroService.rst","api/etho.services.DLPZeroService.rst","api/etho.services.GCMZeroService.rst","api/etho.services.NICounterZeroService.rst","api/etho.services.Opt2ZeroService.rst","api/etho.services.RelayZeroService.rst","api/etho.services.SndZeroService.rst","api/etho.services.TemplateZeroService.rst","api/etho.services.ThuAZeroService.rst","api/etho.services.ThuZeroService.rst","api/etho.services.ZeroService.rst","api/etho.services.camera.base.rst","api/etho.services.camera.basler.rst","api/etho.services.camera.dummy.rst","api/etho.services.camera.flycapture2.rst","api/etho.services.camera.hamamatsu.rst","api/etho.services.camera.spinnaker.rst","api/etho.services.camera.spinnaker_old.rst","api/etho.services.camera.videocapture.rst","api/etho.services.camera.ximea.rst","api/etho.services.dlp.dlp_make_warpfiles.rst","api/etho.services.dlp.dlp_runners.rst","api/etho.services.utils.concurrent_task.rst","api/etho.services.utils.log_exceptions.rst","api/etho.utils.config.rst","api/etho.utils.runner.rst","api/etho.utils.shuffled_cycle.rst","api/etho.utils.sound.rst","api/etho.utils.tui.rst","api/etho.utils.zeroclient.rst","api_etho.rst","callbacks.md","cli.ipynb","configuration/calibration_led.md","configuration/calibration_speaker.md","configuration/configuration.rst","configuration/global.md","configuration/playlist.md","configuration/protocol.md","hardware/camera.md","hardware/hardware.rst","hardware/nidaq.md","hardware/projector.md","hardware/rpi.md","hardware/scanimage.md","index.rst","install.md","logging.md","tutorial.md"],objects:{"etho.call":[[1,0,0,"-","client"],[2,0,0,"-","client_old"],[3,0,0,"-","ephys"],[4,0,0,"-","panoptikum"],[5,0,0,"-","rpi"],[6,0,0,"-","vr"]],"etho.call.client":[[1,1,1,"","cli_progress"],[1,1,1,"","client"]],"etho.call.client_old":[[2,1,1,"","client"]],"etho.cli":[[7,1,1,"","init"],[7,1,1,"","main"],[7,1,1,"","no_gui"],[7,1,1,"","version"]],"etho.gui":[[8,0,0,"-","CamPreview"],[9,0,0,"-","ThuPreview"],[10,0,0,"-","app"],[11,0,0,"-","wxBusyDialog"],[12,0,0,"-","wxCam"],[13,0,0,"-","wxCtrl"],[14,0,0,"-","wxCtrl_ephys"],[15,0,0,"-","wxCtrl_rpi"],[16,0,0,"-","wxCtrl_vr"],[17,0,0,"-","wxDangerDialog"]],"etho.gui.app":[[10,2,1,"","MainWindow"],[10,2,1,"","PandasModel"],[10,2,1,"","RunDialog"],[10,2,1,"","TableView"],[10,1,1,"","main"]],"etho.gui.app.PandasModel":[[10,3,1,"","columnCount"],[10,3,1,"","data"],[10,3,1,"","flags"],[10,3,1,"","headerData"],[10,3,1,"","rowCount"],[10,3,1,"","setData"]],"etho.gui.app.RunDialog":[[10,3,1,"","accept"],[10,3,1,"","reject"]],"etho.gui.wxBusyDialog":[[11,2,1,"","BusyDialog"],[11,2,1,"","Example"]],"etho.gui.wxCam":[[12,2,1,"","Frame"],[12,2,1,"","Panel"]],"etho.gui.wxCtrl":[[13,2,1,"","Frame"]],"etho.gui.wxCtrl_ephys":[[14,2,1,"","Frame"]],"etho.gui.wxCtrl_rpi":[[15,2,1,"","Frame"]],"etho.gui.wxCtrl_vr":[[16,2,1,"","Frame"]],"etho.gui.wxDangerDialog":[[17,2,1,"","DangerDialog"],[17,2,1,"","Example"]],"etho.services":[[18,0,0,"-","BLTZeroService"],[19,0,0,"-","CamZeroService"],[20,0,0,"-","DAQZeroService"],[21,0,0,"-","DLPZeroService"],[22,0,0,"-","GCMZeroService"],[23,0,0,"-","NICounterZeroService"],[24,0,0,"-","Opt2ZeroService"],[25,0,0,"-","RelayZeroService"],[26,0,0,"-","SndZeroService"],[27,0,0,"-","TemplateZeroService"],[28,0,0,"-","ThuAZeroService"],[29,0,0,"-","ThuZeroService"],[30,0,0,"-","ZeroService"]],"etho.services.BLTZeroService":[[18,2,1,"","BLT"]],"etho.services.BLTZeroService.BLT":[[18,3,1,"","cleanup"],[18,3,1,"","is_busy"],[18,3,1,"","test"]],"etho.services.CamZeroService":[[19,2,1,"","CAM"]],"etho.services.CamZeroService.CAM":[[19,3,1,"","cleanup"],[19,3,1,"","is_busy"],[19,3,1,"","test"]],"etho.services.DAQZeroService":[[20,2,1,"","DAQ"]],"etho.services.DAQZeroService.DAQ":[[20,3,1,"","cleanup"],[20,3,1,"","is_busy"],[20,3,1,"","test"]],"etho.services.DLPZeroService":[[21,2,1,"","DLP"]],"etho.services.DLPZeroService.DLP":[[21,3,1,"","cleanup"],[21,3,1,"","is_busy"],[21,3,1,"","test"]],"etho.services.GCMZeroService":[[22,2,1,"","GCM"]],"etho.services.GCMZeroService.GCM":[[22,3,1,"","cleanup"],[22,3,1,"","is_busy"],[22,3,1,"","test"]],"etho.services.NICounterZeroService":[[23,2,1,"","NIC"]],"etho.services.NICounterZeroService.NIC":[[23,3,1,"","cleanup"],[23,3,1,"","is_busy"],[23,3,1,"","test"]],"etho.services.Opt2ZeroService":[[24,2,1,"","OPT2"]],"etho.services.Opt2ZeroService.OPT2":[[24,3,1,"","cleanup"],[24,3,1,"","is_busy"],[24,3,1,"","test"]],"etho.services.RelayZeroService":[[25,2,1,"","REL"]],"etho.services.RelayZeroService.REL":[[25,3,1,"","cleanup"],[25,3,1,"","is_busy"],[25,3,1,"","test"]],"etho.services.SndZeroService":[[26,2,1,"","SND"]],"etho.services.SndZeroService.SND":[[26,3,1,"","cleanup"],[26,3,1,"","is_busy"],[26,3,1,"","test"]],"etho.services.TemplateZeroService":[[27,2,1,"","TMP"]],"etho.services.TemplateZeroService.TMP":[[27,3,1,"","cleanup"],[27,3,1,"","is_busy"],[27,3,1,"","test"]],"etho.services.ThuAZeroService":[[28,2,1,"","THUA"]],"etho.services.ThuAZeroService.THUA":[[28,3,1,"","cleanup"],[28,3,1,"","is_busy"],[28,3,1,"","test"]],"etho.services.ThuZeroService":[[29,2,1,"","THU"]],"etho.services.ThuZeroService.THU":[[29,3,1,"","cleanup"],[29,3,1,"","is_busy"],[29,3,1,"","test"]],"etho.services.ZeroService":[[30,2,1,"","BaseZeroService"]],"etho.services.ZeroService.BaseZeroService":[[30,3,1,"","cleanup"],[30,3,1,"","information"],[30,3,1,"","init_local_logger"],[30,3,1,"","is_busy"],[30,3,1,"","service_start"],[30,3,1,"","service_stop"],[30,3,1,"","test"]],"etho.services.camera":[[31,0,0,"-","base"],[32,0,0,"-","basler"],[33,0,0,"-","dummy"],[34,0,0,"-","flycapture2"],[35,0,0,"-","hamamatsu"],[36,0,0,"-","spinnaker"],[37,0,0,"-","spinnaker_old"],[38,0,0,"-","videocapture"],[39,0,0,"-","ximea"]],"etho.services.camera.spinnaker_old":[[37,2,1,"","Spinnaker_OLD"]],"etho.services.camera.spinnaker_old.Spinnaker_OLD":[[37,3,1,"","get"],[37,3,1,"","reset"]],"etho.services.dlp":[[40,0,0,"-","dlp_make_warpfiles"],[41,0,0,"-","dlp_runners"]],"etho.services.dlp.dlp_make_warpfiles":[[40,1,1,"","create_warpfile"],[40,1,1,"","get_transformation_matrices"]],"etho.services.dlp.dlp_runners":[[41,2,1,"","DLP_runner"],[41,2,1,"","LED_blinker"],[41,2,1,"","ObjectCirclesGrid"],[41,2,1,"","ObjectMoverSizer"],[41,1,1,"","register_runner"]],"etho.services.dlp.dlp_runners.DLP_runner":[[41,3,1,"","destroy"],[41,3,1,"","status"],[41,3,1,"","update"]],"etho.services.dlp.dlp_runners.LED_blinker":[[41,3,1,"","destroy"],[41,3,1,"","status"],[41,3,1,"","update"]],"etho.services.dlp.dlp_runners.ObjectCirclesGrid":[[41,3,1,"","status"],[41,3,1,"","update"]],"etho.services.dlp.dlp_runners.ObjectMoverSizer":[[41,3,1,"","status"],[41,3,1,"","update"]],"etho.services.utils":[[42,0,0,"-","concurrent_task"],[43,0,0,"-","log_exceptions"]],"etho.services.utils.concurrent_task":[[42,2,1,"","ConcurrentTask"],[42,2,1,"","Faucet"],[42,2,1,"","SharedNumpyArray"]],"etho.services.utils.concurrent_task.Faucet":[[42,3,1,"","get"]],"etho.services.utils.concurrent_task.SharedNumpyArray":[[42,3,1,"","get"],[42,3,1,"","poll"],[42,3,1,"","put"],[42,4,1,"","stale"]],"etho.services.utils.log_exceptions":[[43,1,1,"","for_all_methods"],[43,1,1,"","log_exceptions"]],"etho.utils":[[44,0,0,"-","config"],[45,0,0,"-","runner"],[46,0,0,"-","shuffled_cycle"],[47,0,0,"-","sound"],[48,0,0,"-","tui"],[49,0,0,"-","zeroclient"]],"etho.utils.config":[[44,1,1,"","defaultify"]],"etho.utils.runner":[[45,2,1,"","Runner"]],"etho.utils.runner.Runner":[[45,3,1,"","is_online"],[45,3,1,"","is_running"],[45,3,1,"","kill"],[45,3,1,"","kill_python"],[45,3,1,"","pid"],[45,3,1,"","run"]],"etho.utils.shuffled_cycle":[[46,2,1,"","shuffled_cycle"]],"etho.utils.sound":[[47,1,1,"","build_playlist"],[47,1,1,"","make_pulse"],[47,1,1,"","make_sine"],[47,1,1,"","normalize_table"],[47,1,1,"","parse_cell"],[47,1,1,"","parse_pulse_parameters"],[47,1,1,"","parse_table"],[47,1,1,"","select_channels_from_playlist"]],"etho.utils.tui":[[48,1,1,"","df_to_table"]],etho:[[7,0,0,"-","cli"]]},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"],"4":["py","property","Python property"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method","4":"py:property"},terms:{"0":[30,37,40,41,42,52,56,57,58,64,66],"001":42,"011111111111111112":41,"04":54,"08":54,"0m":52,"0servic":30,"1":[18,19,20,21,22,23,24,25,26,27,28,29,30,40,41,52,54,56,57,58,64,67],"10":[37,58,66],"100":[56,57,58],"1000":[56,57,58],"10000":[54,58],"1080":40,"10800":41,"10cm":54,"10m":58,"11":52,"110423":68,"1280x720":19,"129":67,"13":[19,52],"1300":58,"14":52,"1420":56,"1442":56,"1443":56,"1444":56,"1445":56,"1447":56,"1448":56,"1449":56,"1461":56,"15":52,"150":56,"1500":56,"16":[52,58],"1640x1232":19,"168":[18,19,20,21,22,23,24,25,26,27,28,29,30,56,58,67],"169":56,"17":58,"180":[41,58],"192":[18,19,20,21,22,23,24,25,26,27,28,29,30,56,58],"1920":40,"1v":57,"2":[40,52,56,57,58,68],"20":58,"200":[56,57,58],"2000":[56,57],"2019":54,"20200818":54,"2023":52,"21":52,"22":58,"23":66,"24":58,"25":[52,58],"250":56,"2m":[57,64],"3":[25,41,52,56,58,66],"30":[56,58],"300":56,"30959651":58,"350":56,"360":[41,58],"38":52,"3v":25,"4":[40,56,68],"400":56,"40fp":19,"42":58,"4242":56,"4243":56,"4244":56,"4245":56,"4247":56,"4248":56,"4249":56,"44100":58,"450":56,"4m":52,"5":[56,57],"500":56,"5000":58,"5400":41,"5_000":58,"5m":[57,58],"5v":25,"6":[52,56,57,66],"60":41,"600":56,"640":58,"64bit":52,"7":[56,58,66],"700":56,"78":58,"8":[52,56],"800":56,"9":[52,56],"90":58,"900":56,"90fp":19,"abstract":30,"break":54,"class":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,37,41,42,43,45,46,47,51],"default":[1,7,10,18,19,20,21,22,23,24,25,26,27,28,29,30,37,41,42,45,48,52,56,58,64,66,68],"do":[19,41,57,66,68],"export":54,"float":[37,41,42,45,47,57],"function":[18,19,20,21,22,23,24,25,26,27,28,29,30,40,42,43,44],"import":[0,7,52,56,57,58],"int":[10,18,19,20,21,22,23,24,25,26,27,28,29,30,40,41,45],"new":54,"return":[18,19,20,21,22,23,24,25,26,27,28,29,30,37,40,41,42,45,47,48,57],"static":0,"true":[1,30,42,45,47,48,58],"try":[28,29,54],"while":68,A:[0,43,48,54,55],Be:54,For:[7,41,42,51,58,66,68],If:[45,57],Is:68,It:54,NOT:[52,68],ON:58,ONES:56,OR:58,One:57,Or:57,THE:[56,68],TO:56,The:[0,40,43,48,54,57,58,64],Then:41,Will:[40,41,57],_build:0,_description_:[1,2,45,52],_dlp:58,_done_ev:1,_queue:1,_stop_ev:1,_summary_:[1,2,45],_type_:1,abbrevi:58,abcd:46,about:[30,68],abov:67,absolut:40,absolute_path_to_fil:41,acbd:46,accbbdbdcaba:46,accept:[10,41],access:[0,42,56],accord:54,acq:[37,64],acquisit:[57,64],across:57,activ:66,adafruit:[28,29,66],adafruit_dht:66,adafruit_python_dht:[28,29],add:[41,48,57,64,68],address:45,adjust:57,advertis:56,after:[54,56,57],ai0:[54,58,68],ai1:68,ai2:68,aliv:30,all:[30,37,41,43,45,54,56,57,58,68],allow:55,alreadi:42,also:[57,68],alwai:42,amp:[54,68],amplitud:[24,58],an:[1,54,56],analog:[20,54,57,68],analog_chans_in:58,analog_chans_out:58,analog_in:68,analog_in_info:68,analog_out:68,analog_out_info:68,analysi:54,ani:[1,10,30,41,42,68],annotate_frame_num:58,anyth:37,ao0:[58,68],ao1:[58,68],api:66,appli:58,apt:66,ar:[0,42,54,55,58,64,67,68],arduino:[28,29],arg:[11,17,18,19,20,21,22,23,24,25,26,27,28,29,30,41,42],argument:52,arm64:52,arm:[52,64],arrai:[37,41,42,47,57,66],assess:42,associ:68,asynchron:45,attach:42,attenu:[54,56,57],attribut:45,audio:[58,68],avail:52,avi:58,back:68,backend:58,backlight:58,ball_info:41,bandwidth:51,base:[30,41,58],basecallback:51,basezeroservic:30,basi:55,basler:66,bdca:46,been:[42,67],befor:[57,64],begin:54,being:[51,57],below:[41,57,58],between:42,bin3:58,binari:58,blink:41,blinker:41,block:[42,46,47,58,68],blt:18,bnc:54,book:0,bool:[1,2,7,10,42,45,47,48],both:58,box:54,bracket:57,bright:58,broadcast:67,build_playlist:47,built:0,bundl:20,busi:[18,19,20,21,22,23,24,25,26,27,28,29,30],busydialog:11,button:64,c:[0,37,54,56,58,66,68],c_doubl:42,calcul:54,calib:54,calibr:68,call:[30,41,42,52,68],callabl:[41,42,47],callback:[57,58,68],cam:[19,37,56,58,68],cam_serialnumb:58,cam_typ:[58,68],camera:[19,51,56,58,66,68],can:[19,24,45,51,56,57,58,67,68],cannot:25,card:68,cast:[47,57],cdab:46,cell:[47,57],center:54,chang:[30,54,68],channel:[47,54,58,64,68],channels_to_keep:47,check:[7,30,56],child:10,chunk:51,circl:41,circuitpython:66,cl:41,clang:52,classnam:[41,58],clean:0,cleanli:45,cleanup:[18,19,20,21,22,23,24,25,26,27,28,29,30],cli:52,cli_progress:1,click:54,client:[2,68],clock:[57,64],clock_pulsedur_pulsepau:57,clock_sourc:58,clockwis:40,close:[30,41],cm2:53,cmd:45,cmdline:45,cmo:66,code:55,coincid:54,col:47,collect:44,column:[48,57],columncount:10,com:[0,28,29,66],come:66,comm:42,comma:57,command:[7,45],common:42,comms_kwarg:42,commun:[30,42],concaten:[47,57],concurrenttask:42,conda:[0,52,66,68],condadir:68,config:[7,56,58,66],config_file_nam:54,configur:[57,58,64],connect:[28,29,42,54,68],consist:42,consol:67,construct:42,contain:[42,57,58],content:56,continu:[37,57],control:[24,55,57,58,68],convert:[37,44,48,57],coolcallback:51,coordin:40,copi:54,core:[47,48,66],corner:40,correct:[54,56,57,64],correctli:54,correspond:54,could:[7,41],count:48,coupl:51,creat:[40,54,57,66,68],create_warpfil:40,crf:58,csv:54,ctype:42,current:[42,57,58],cut:54,cycl:46,d:[44,52],da:[7,68],dangerdialog:17,daq:[20,41,51,56,58,64,68],daqexpress:54,daqmx:[52,66],dark:0,data:[10,40,42,51,54,58,64],datafram:[30,47,48,57],date:54,datenam:64,db:57,dcam:66,de:25,debug:[1,2,7,52,68],decor:[41,43],defaultdict:44,defaultfactori:44,defaultifi:44,defin:[30,41,54,55,57],defopt:66,delai:[57,64],delaypost:57,deleg:42,delimit:57,dep:66,deriv:30,desc:2,descript:[18,19,20,21,22,23,24,25,26,27,28,29,30,37,41,42,47,57],desir:[47,54],destroi:41,detail:[57,64],determin:47,df_to_tabl:48,dht22:[28,29],dht:66,diagram:68,dict:[1,30,41,42,44,51],dictionari:[1,56,57],didnt:45,differ:[53,57,58,68],differenti:54,digit:[20,57,64],digital_chans_out:64,directli:[28,29],directori:[40,56,57,58,68],disabl:68,disown:45,disp:58,disp_fast:58,displai:[7,30,42,67],displayrol:10,distanc:54,dlp:[21,58],dlpzeroservic:41,doc:[0,7,57,64,66],document:54,doe:57,don:42,done:1,done_ev:[1,10],doubl:54,down:30,drive:53,driver:[66,68],dtype:[47,57],duplic:[47,57],dur:64,durat:[1,47,57],dure:[41,68],e:[41,45,47,54,55,57,58,66,68],each:[47,51,55,56,57,58,64,67,68],ed:42,edit:10,editrol:10,eg:40,either:[42,47,58],element:57,empty_valu:42,en:[19,66],enabl:64,end:[42,54,57,64],ensur:[41,42],entri:[47,57,68],env:[58,68],environ:[56,66,68],essenti:68,etc:[18,19,20,21,22,23,24,25,26,27,28,29,30,41,55],etho:[52,58,64,66,68],ethoconfig:[52,54,56,57,68],ethoconfig_rpi7_10cm_aft:54,ethoconfig_rpi7_10cm_befor:54,ethomast:[56,57,58,67],ethoservic:30,eu:66,even:[45,57],event:[1,51],everi:[41,51,54,58],everyth:54,ex:[56,58,68],exampl:[11,17,41,54,68],except:[7,43,52],execut:[56,68],exit:[45,52],expect:[1,41],experi:[1,55,58],expos:42,exposur:58,exposuremod:58,expt:1,extens:57,extern:[41,57,64,68],exterrn:64,extra:41,fabric:[45,66],factor:56,fail:[7,18,19,20,21,22,23,24,25,26,27,28,29,30,52],failur:45,fall:[57,64],fals:[1,2,7,10,30,45,52,58],faster:58,faucet:42,feb:52,feedback:42,fewer:57,ffmpeg:58,ffmpeg_param:58,fictrac:41,field:[41,57,58],fig:54,figur:56,file:[0,7,10,30,40,41,51,54,55,56,57,58,64,66,67],filenam:[41,57],fill:57,finish:[30,54],first:[41,42,54,57,64,68],fixedfp:58,flag:10,flammkuchen:66,flash:66,flea3:37,flir:[37,66,68],float64:42,flow:55,fly:[54,57],flybal:58,flycaptur:[52,66,68],flycapture2:58,focu:64,folder:[7,10,54,55,56,66,68],follow:[30,57,58,68],for_all_method:43,forg:[0,52,66],forget:68,format:[37,58],fov:19,fp:56,frame:[12,13,14,15,16,41,47,48,51,55,57,58,64],frame_height:58,frame_numb:41,frame_offi:58,frame_offx:58,frame_r:58,frame_width:58,frameheight:58,framer:58,framewidth:58,free:[18,19,20,21,22,23,24,25,26,27,28,29,30,37,41],freq:57,frequenc:[47,56,57],fresh:42,friendli:51,from:[1,8,10,37,40,41,47,52,54,56,57,58,64,66,68],fs:[47,57],full:[19,46,51,57,68],fulli:0,fun:1,func:41,furo:0,futur:66,g:[41,45,47,54,55,57,58,66,68],gain:58,gamma:58,gcm:[22,58,68],gener:[41,56,57,58,68],geometr:41,get:[37,40,42,45,66],get_transformation_matric:40,gevent:66,gh:0,ghp:0,git:66,github:[0,28,29,66],give:[48,54],given:57,global:[30,55,57],go:54,goal:54,goe:37,good:54,gpio:[24,25,58],gpiozero:[24,25,66],gpu:58,graph:54,graphic:10,grasshopp:37,great:42,green:58,grid:41,grid_direct:41,grid_direction_change_fram:41,grid_spe:41,gui:[7,52,66],h5:58,h5py:[52,66],h:52,ha:[42,47,55,58,67],hacki:25,hamamatsu:66,hardwar:[7,30,55,63],have:[41,42,57,66,68],hdf:58,head:[10,30,52,56,67],head_ip:[18,19,20,21,22,23,24,25,26,27,28,29,30],header:57,headerdata:10,headlogg:67,height:[19,40],help:52,helper:42,here:[41,56,68],hhmmss:68,hierarchi:54,home:56,homographi:40,host:[1,2,12,13,14,15,16,17,45,52,56,58],host_is_remot:45,host_is_win:45,host_yyyymmdd:68,how:[7,41],html:[0,7,19,66],http:[0,19,24,28,29,66],humid:[28,29,51,58,66],hz:[47,57,58],i:54,ideal:68,identifi:30,idl:[18,19,20,21,22,23,24,25,26,27,28,29,30],ignor:41,illumin:58,imag:[0,37,40,52,64],image_height:40,image_timestamp:37,image_width:40,implement:30,implicitli:57,importantli:68,includ:[54,68],independ:[24,42],index:48,index_nam:48,indic:[30,42],individu:[24,51,58,68],inf:64,info:[7,67],inform:[30,67,68],ini:57,init:[7,37,41,52,66],init_local_logg:[30,67],initi:[7,25,41,67],inlin:0,input:[20,54,68],insid:54,instal:[0,7,63],instanc:[18,19,20,21,22,23,24,25,26,27,28,29,30,41,48,57],instruct:[7,68],instrument:[54,68],intens:[47,57,68],intercept:67,interfac:[7,10,42,58],interv:58,intial:[1,57],invok:45,io:[19,24,66],ip:[15,16,45,56,67],ip_address:30,ipynb:54,ipython:66,ir:58,is_busi:[18,19,20,21,22,23,24,25,26,27,28,29,30],is_onlin:45,is_run:45,item:57,itemdatarol:10,itemflag:10,iter:46,its:54,janclemenslab:[0,7,66],just:57,kei:57,kill:45,kill_python:45,kw:[11,17],kwarg:[18,19,20,21,22,23,24,25,26,27,28,29,30,41,42],kwignor:41,lab:54,lambda:44,larg:64,last:[42,57,64],latest:[0,66],least:45,leav:64,led:[24,41,58,68],led_blink:[41,58],led_blinker_fil:41,led_dur:[41,58],led_fram:[41,58],led_po:41,led_siz:41,ledamp:58,ledd1b:68,left:40,length:47,letter:[30,58],level:67,libgpiod2:66,librari:[25,52,68],lighcraft:66,light:[0,57],like:[42,51,57],limit:[19,58],line1:64,line2:64,line3:64,line:7,list:[41,42,45,47,54,56,57,58,68],liter:42,live:8,load:57,load_sound:57,local:[30,45,67],localhost:[1,56,68],localhost_20230401:68,locallu:45,log:[30,41,43,51,56,58,68],logfilenam:[30,67],logger:[43,56,67],logging_port:[18,19,20,21,22,23,24,25,26,27,28,29,30,67],loggingfold:56,logic:42,longest:57,loop:[41,51,64],loopback:68,loos:42,loss:42,low:51,lower:68,m:68,machin:45,maco:52,main:[7,10,52],mainwindow:10,make:[0,47,57,68],make_puls:47,make_sin:47,mamba:[0,66],mambaforg:68,manag:45,manipul:41,manual:54,map:57,match:[45,57],matplotlib:58,matric:40,maxdur:58,measur:[53,54],mediocre_stim:57,mesh:40,mess:55,messag:[30,41,52,67],method:[30,43,47],mgen:56,mic:54,mic_calibr:54,mic_calibration_20190408:54,micromanipul:54,microphon:54,mimic:42,mind:42,miniconda3:56,miniconda:58,miniforg:66,minim:68,mirror:57,mirror_l:57,miss:54,mm2:57,mm:57,mode:[0,19,57],model:10,model_dict:41,modul:67,more:68,move:41,mq013cg:58,ms:[47,57,68],msgpack:66,much:58,multidimension:57,multipl:24,multiprocess:42,must:42,mw:[53,57],myst:0,n:66,name:[1,40,41,45,48,51,54,55,56,58,68],nation:[54,68],nb:[0,64],nb_sampl:47,nb_screen:40,nb_screensx3x3:40,ncb:[54,56,58],ncircl:41,ndarrai:[37,40],need:[0,30,41,54,56,57,58],nest:44,network:30,never:[42,58],new_consol:45,next:[57,64],ni:[52,66,68],nic:[23,68],nm:57,no_gui:7,node:[58,67],none:[1,2,10,12,18,19,20,21,22,23,24,25,26,27,28,29,30,37,42,43,45,46,47,48,57],nonzero:45,normal:[40,47,54,57],normalize_t:[47,57],note:[41,57,66],notebook:54,np:[37,41,42,47],npz:41,ns:58,number:[41,52,57,58,64],numpi:[40,42,47,52,57,66],nvidia:58,o:[55,57],obj:48,object:[41,42,43,58],objectcirclesgrid:41,objectmovers:41,occur:43,off:25,offset:54,old:66,older:[37,66,68],onboardclock:58,one:[43,45,47,57],onli:[37,47,58,66],onlin:45,onset:54,open:[10,54,68],opencv:[58,66],oper:63,opt2:[24,58],optim:37,option:[1,2,10,12,18,19,20,21,22,23,24,25,26,27,28,29,30,37,41,42,43,45,47,48,52,58,67,68],opto:[58,68],orca:66,order:58,org:[0,7,66],orient:10,os:10,out:[51,54,56,58],output:[20,54,57,64,68],outsid:1,over:[42,51,56],overrid:45,own:41,p:52,packag:52,pad:57,page:0,pair:56,panda:[47,48,52,57,66],pandas_datafram:48,pandasmodel:10,panel:[0,12],param:[41,43,48,58],paramet:[1,2,7,10,18,19,20,21,22,23,24,25,26,27,28,29,30,37,40,41,42,45,46,47,56,58,68],parent:[10,12,68],pars:[47,56],parse_cel:47,parse_pulse_paramet:47,parse_t:[47,57],parsed_t:57,part:54,partial:[37,45],pass:[41,42,43,48,51],path:[40,58,68],pathlik:10,pattern:24,paus:57,pb_ui:64,pc:[54,66],pd:[30,47,57],pdur:57,pend:57,per:[55,57,58],period:47,phase:[47,57],photodiod:41,photomet:53,pi:[8,24,47,58,66],picamera:[19,58,66],pickl:58,pid:45,pillow:66,pin:[24,25,58],ping:[30,45],pip3:66,pip:[0,66],pipe:42,pixel:[37,40,58,64],place:54,plai:[55,68],playback:[54,57,58,68],playback_calibr:54,playlist:[10,47,52,54,55,56,64],playlist_channel:58,playlist_fold:[10,52],playlistfil:[1,2,52],playlistfilenam:57,playlistfold:[10,52,56],plot:58,plot_fast:58,point:[54,56],pointer:37,pointgrei:[66,68],poll:42,pong:30,popul:48,port0:64,port:[30,56,68],portrang:56,posit:[41,52],possibl:[19,28,29],post:57,postpop:66,power:54,ppau:57,practic:54,pre:[57,66],prefix:52,prepend:58,preview:[1,12,52],primit:42,print:[30,54,58],probabl:[42,58],problem:19,problemat:57,process:[42,45,51],produc:51,product:66,program:52,progress:[30,52],proj_roi:40,project:[40,66],projection_height:40,projection_width:40,projector:58,projector_dir:40,promis:45,proper:0,properti:[30,42],prot:[41,58],protfil:68,protocol:[10,41,51,52,54,55,56,64],protocol_filenam:12,protocol_fold:[10,52],protocolfil:[1,2,52,58],protocolfold:[10,52,56],provid:42,psutil:66,psychopi:[41,58],ptg:56,publish:30,pul:57,pul_5_10_10_0:57,pul_pulsedur_pulsepau_pulsenumber_pulsedelai:57,pull:37,puls:[47,57],pulsedelai:47,pulsedur:47,pulsenumb:47,pulsepau:47,push:0,put:42,py:54,pydaqmx:[66,68],pygam:58,pylab:66,pylablib:66,pylon:66,pypylon:66,pyqtgraph:[52,58,66],pyseri:66,pyside2:52,pyside6:66,python:[45,52,56,58,67,68],python_ex:[45,56,58,68],pyyaml:[56,66],pyzmq:66,qmodelindex:10,qt:[10,52],qtpy:[52,66],queri:45,queue:[1,42],queue_tot:10,quickli:68,rad:57,rais:[37,42,45],random:58,raspberi:66,raspberri:24,raspbian:66,rate:[47,51,54,55],raw:57,raw_tabl:57,re:54,read:[41,42,51,56,58],read_tabl:57,readconfig:58,readthedoc:[19,24,66],realtim:42,receiv:8,recogn:45,recommend:66,record:[19,54,58,64,68],recording_nam:54,rect:[41,58],red:58,register_runn:41,reject:10,rel:[25,58],relai:[25,58],releas:19,remain:[57,66],remot:[45,56,57,64],render:0,replac:68,requir:[0,25,57,66,68],reset:37,resiz:41,resourc:[18,19,20,21,22,23,24,25,26,27,28,29,30,37,41],respons:30,result:45,rich:[48,66],rich_inform:30,rig:[54,57],rise:[57,64],robust:41,roi:40,role:[10,55],roughli:54,row:[47,48,57],rowcount:10,rpi3:56,rpi4:56,rpi5:56,rpi6:56,rpi7:[54,56],rpi7_10cm_aft:54,rpi7_10cm_befor:54,rpi8:56,rpi9:56,rpi:[25,28,29,54,66],run:[0,30,42,45,58],run_loc:45,rundialog:10,runner:[41,58],s0:54,s:[51,52,54,57,58,67],safe:42,same:[41,57],sampl:[41,47,54,55,57,64],samplingr:[47,58],save:[40,42,52,54,57,58,64,66,68],save_avi:[58,68],save_avi_fast:58,save_avi_vidread:58,save_directori:[58,68],save_h5:[58,68],save_prefix:[1,2,52],save_timestamp:[58,68],savedlp_h5:58,savefilenam:64,scale:57,scan:64,scanimag:57,scanimage_next:57,scipi:[52,66],scm:56,screen:41,sdk:[37,52,66,68],second:[37,47,51,58,68],section:56,see:[41,45,57,58,64],select:[41,47,54,64,68],select_channels_from_playlist:47,self:[10,30,67],send:42,sensor:[19,28,29,51,58,66],sent:64,separ:[57,64],serial:[18,19,20,21,22,23,24,25,26,27,28,29,30,58],serialnumb:37,server:[30,54],server_start:30,server_stop:30,servic:[1,56,58,67],service_nam:30,service_port:[18,19,20,21,22,23,24,25,26,27,28,29,30],service_start:30,service_stop:30,serviceeas:30,services_logging_port:56,services_working_port:56,session:64,set:[1,19,37,41,55,57,58],setdata:10,setup:[30,68],shape:[40,42],share:42,sharednumpyarrai:42,shorter:57,shortli:19,should:[30,37,40,41,43,54,57,58,64,66],show:[48,52],show_index:48,show_progress:1,show_test_imag:2,shuffl:[46,47,57,58,64],shut:30,shutter:68,shutter_spe:58,shutterspe:58,si_next:[57,64],si_start:[57,64],si_stop:[57,64],signal:[1,57,64],silencepost:[57,64],silencepr:[57,64],silent:54,simpli:57,simplic:51,sin:57,sin_100_0_3000:57,sin_200_0_2000:57,sin_frequency_phase_dur:57,sinc:[25,42,57],singl:57,sinusoid:[47,57],size:[41,55,56],sle:56,sleep:37,slower:42,slp:56,small:68,snd:[26,56,58],so:[25,57],some:66,someth:68,sound:[55,57,58,68],sound_ord:47,soundboard:66,soundlist:47,sourc:[1,2,7,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,37,40,41,42,43,44,45,46,47,48],specif:[55,57,58,66],specifi:[41,54,64,67,68],speed:42,sphinx:0,sphinxcontrib:0,spinnak:[37,52,58,66,68],squar:[41,47,57],ssh:[45,56],stabl:66,stale:42,stamp:37,start:[1,30,54,56,57,64,66,68],state:[18,19,20,21,22,23,24,25,26,27,28,29,30],statu:[41,56],step:68,sth:37,stim2:57,stim:[41,56],stim_on_chan1:57,stim_on_chan2:57,stimfilenam:[47,57],stimfold:[56,57],stimuli:[57,58,64],stimulu:[47,54,55,58],stop:[1,30,42,54,57,64],stop_ev:[1,10],store:[40,68],str:[1,2,10,12,18,19,20,21,22,23,24,25,26,27,28,29,30,40,41,42,45,46,47,48,57],stream:8,streamwatch:45,string:[41,47],strip:57,stuff:66,subfold:68,sudo:66,summari:[18,19,20,21,22,23,24,25,26,27,28,29,30,37,42,47],superstimulu:57,suppli:54,support:[37,52,58,66],sure:[47,54,57],surround:57,sync:[41,58],synchron:[20,42],system:[7,37,55],system_timestamp:37,t:[42,57],tab:[0,54,57],tabl:[47,48,57],tableview:10,task:[1,20,42,54],task_kwarg:42,taskstopsign:42,tcp:30,tell:42,temperatur:[28,29,51,58,66],tempor:24,termin:[30,64],test:[18,19,20,21,22,23,24,25,26,27,28,29,30,52,54,68],test_calibr:54,text:57,than:[19,57],thei:55,thi:[0,41,52,57,58,64,68],thorlab:[53,68],those:19,thread:[1,42],three:[30,57],through:68,throughput:37,throught:64,thu:[29,58],thua:[28,56,58],time:[37,54,57],timeout:[37,42,45],timestamp:58,tmp:27,todo:66,toggl:25,tool:42,top:40,total:57,trace:58,trail:68,train:[47,57],transform:40,transformation_matric:40,translat:47,tree:0,trial:47,trigger:[57,64,68],tui:30,tupl:[30,37,42],turn:25,two:[47,68],txt:54,type:[37,40,41,42,44,45,47,48,54,55,57],typic:[57,68],ug:56,ukme04:54,unaccept:42,under:[40,54],unexpectedexit:45,union:[10,45,47],uniqu:30,unit:[54,57],unknown:42,uns:42,unspecifi:41,unus:[56,57,58],up:[19,41],updat:[41,42],us:[1,8,24,25,41,53,54,56,57,58,66,67,68],usag:52,use_servic:[58,68],use_warp:58,user:[10,54,55,56,58],usual:[19,54],utc:37,util:[30,57,58],v0:52,v1:52,v2:52,v3:52,v5:52,valid:58,valu:[10,41,42,48,52,54,56,57,64],valueerror:[37,42],variant:41,veri:[25,64],version:[0,7,66],via:[0,24,28,29,42,45,56,57,58,64,67,68],video:[8,58,66,68],video_denois:58,videoprocessingframework:58,videowrit:58,vidgear:66,vidread:[58,66],visual:[41,58],voltag:53,vpf:58,vpf_bin_path:58,w:[55,57],wa:45,wai:55,walk:68,want:[19,42,66],warn:[45,52,67],warp:40,warpfil:[40,58],warpmesh_1140x912:58,warpmesh_:40,watchererror:45,wav:57,waveform:47,we:[25,66,68],were:54,what:57,when:[30,41,42,54,56],where:[40,58,68],whether:[18,19,20,21,22,23,24,25,26,27,28,29,30,42],which:[40,45,47,56,57,68],whitespac:57,whole:54,width:[19,40],wiki:66,win:41,window:41,wire:68,work:[41,56,58,66,68],working_directori:58,would:54,wrap:[42,43,47],wrapper:42,write:42,wrong:37,www:66,wxctrl:68,x:[37,40],ximea:[58,66,68],y:[37,40,66],yaml:[56,58],yml:[10,52,54,68],you:[19,42,66,68],your:[41,68],z:58,zero:57,zeromq:8,zerorpc:66},titles:["Ethodrome documentation","etho.call.client","etho.call.client_old","etho.call.ephys","etho.call.panoptikum","etho.call.rpi","etho.call.vr","etho.cli","etho.gui.CamPreview","etho.gui.ThuPreview","etho.gui.app","etho.gui.wxBusyDialog","etho.gui.wxCam","etho.gui.wxCtrl","etho.gui.wxCtrl_ephys","etho.gui.wxCtrl_rpi","etho.gui.wxCtrl_vr","etho.gui.wxDangerDialog","etho.services.BLTZeroService","etho.services.CamZeroService","etho.services.DAQZeroService","etho.services.DLPZeroService","etho.services.GCMZeroService","etho.services.NICounterZeroService","etho.services.Opt2ZeroService","etho.services.RelayZeroService","etho.services.SndZeroService","etho.services.TemplateZeroService","etho.services.ThuAZeroService","etho.services.ThuZeroService","etho.services.ZeroService","etho.services.camera.base","etho.services.camera.basler","etho.services.camera.dummy","etho.services.camera.flycapture2","etho.services.camera.hamamatsu","etho.services.camera.spinnaker","etho.services.camera.spinnaker_old","etho.services.camera.videocapture","etho.services.camera.ximea","etho.services.dlp.dlp_make_warpfiles","etho.services.dlp.dlp_runners","etho.services.utils.concurrent_task","etho.services.utils.log_exceptions","etho.utils.config","etho.utils.runner","etho.utils.shuffled_cycle","etho.utils.sound","etho.utils.tui","etho.utils.zeroclient","Developer API","Callbacks","Command-line interface","LED calibration","Speaker calibration","Configuration","Global configuration","Stimulus playlists","Experimental protocols","Cameras","Supported Hardware","National Instruments DAQmx cards","DLP projector","Raspberry PI","ScanImage","Etho documentation","Installation","Logging","Tutorial"],titleterms:{For:56,There:57,an:[52,68],analyz:54,anatomi:51,api:50,app:10,ar:57,base:31,basler:32,bltzeroservic:18,build:0,calibr:[53,54],call:[1,2,3,4,5,6],callback:51,camera:[31,32,33,34,35,36,37,38,39,59],campreview:8,camzeroservic:19,card:61,channel:57,cli:[7,68],client:1,client_old:2,command:52,concurrent_task:42,config:[44,52],configur:[55,56,66,68],control:64,daqmx:61,daqzeroservic:20,data:57,develop:50,displai:52,dlp:[40,41,62],dlp_make_warpfil:40,dlp_runner:41,dlpzeroservic:21,document:[0,65],dummi:33,ephi:3,etho:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,65],ethodrom:0,experi:[52,68],experiment:58,file:[52,68],flycapture2:34,folder:52,format:57,gcmzeroservic:22,global:56,graphic:52,gui:[8,9,10,11,12,13,14,15,16,17,68],hamamatsu:35,hardwar:[52,54,60,66,68],host:68,info:52,initi:[52,66],instal:[66,68],instrument:61,interfac:52,led:53,line:52,log:67,log_except:43,magic:57,make:[51,58],multi:57,name:57,nation:61,nicounterzeroservic:23,open:52,opt2zeroservic:24,option:66,own:51,packag:66,panoptikum:4,pars:[57,58],pi:63,playlist:[57,68],produc:68,projector:62,protocol:[58,68],publish:0,python:66,raspberri:63,relayzeroservic:25,result:54,rpi:[5,56],run:[54,68],runner:45,scanimag:64,servic:[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,51,68],set:[54,64],setup:54,sever:57,shuffled_cycl:46,sndzeroservic:26,softwar:[54,66],sound:47,speaker:54,specifi:57,spinnak:36,spinnaker_old:37,start:52,stimul:57,stimulu:[57,64],support:60,system:[52,68],templatezeroservic:27,test:66,thuazeroservic:28,thupreview:9,thuzeroservic:29,tui:48,tutori:68,up:54,usag:51,user:52,util:[42,43,44,45,46,47,48,49],version:52,videocaptur:38,vr:6,wai:57,wxbusydialog:11,wxcam:12,wxctrl:13,wxctrl_ephi:14,wxctrl_rpi:15,wxctrl_vr:16,wxdangerdialog:17,ximea:39,your:51,zerocli:49,zeroservic:30}}) \ No newline at end of file +Search.setIndex({docnames:["README","api/etho.call.client","api/etho.call.client_old","api/etho.call.ephys","api/etho.call.panoptikum","api/etho.call.rpi","api/etho.call.vr","api/etho.cli","api/etho.gui.CamPreview","api/etho.gui.ThuPreview","api/etho.gui.app","api/etho.gui.wxBusyDialog","api/etho.gui.wxCam","api/etho.gui.wxCtrl","api/etho.gui.wxCtrl_ephys","api/etho.gui.wxCtrl_rpi","api/etho.gui.wxCtrl_vr","api/etho.gui.wxDangerDialog","api/etho.services.BLTZeroService","api/etho.services.CamZeroService","api/etho.services.DAQZeroService","api/etho.services.DLPZeroService","api/etho.services.GCMZeroService","api/etho.services.NICounterZeroService","api/etho.services.Opt2ZeroService","api/etho.services.RelayZeroService","api/etho.services.SndZeroService","api/etho.services.TemplateZeroService","api/etho.services.ThuAZeroService","api/etho.services.ThuZeroService","api/etho.services.ZeroService","api/etho.services.camera.base","api/etho.services.camera.basler","api/etho.services.camera.dummy","api/etho.services.camera.flycapture2","api/etho.services.camera.hamamatsu","api/etho.services.camera.spinnaker","api/etho.services.camera.spinnaker_old","api/etho.services.camera.videocapture","api/etho.services.camera.ximea","api/etho.services.dlp.dlp_make_warpfiles","api/etho.services.dlp.dlp_runners","api/etho.services.utils.concurrent_task","api/etho.services.utils.log_exceptions","api/etho.utils.config","api/etho.utils.runner","api/etho.utils.shuffled_cycle","api/etho.utils.sound","api/etho.utils.tui","api/etho.utils.zeroclient","api_etho","callbacks","cli","configuration/calibration_led","configuration/calibration_speaker","configuration/configuration","configuration/global","configuration/playlist","configuration/protocol","hardware/camera","hardware/hardware","hardware/nidaq","hardware/projector","hardware/rpi","hardware/scanimage","index","install","logging","tutorial"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["README.md","api/etho.call.client.rst","api/etho.call.client_old.rst","api/etho.call.ephys.rst","api/etho.call.panoptikum.rst","api/etho.call.rpi.rst","api/etho.call.vr.rst","api/etho.cli.rst","api/etho.gui.CamPreview.rst","api/etho.gui.ThuPreview.rst","api/etho.gui.app.rst","api/etho.gui.wxBusyDialog.rst","api/etho.gui.wxCam.rst","api/etho.gui.wxCtrl.rst","api/etho.gui.wxCtrl_ephys.rst","api/etho.gui.wxCtrl_rpi.rst","api/etho.gui.wxCtrl_vr.rst","api/etho.gui.wxDangerDialog.rst","api/etho.services.BLTZeroService.rst","api/etho.services.CamZeroService.rst","api/etho.services.DAQZeroService.rst","api/etho.services.DLPZeroService.rst","api/etho.services.GCMZeroService.rst","api/etho.services.NICounterZeroService.rst","api/etho.services.Opt2ZeroService.rst","api/etho.services.RelayZeroService.rst","api/etho.services.SndZeroService.rst","api/etho.services.TemplateZeroService.rst","api/etho.services.ThuAZeroService.rst","api/etho.services.ThuZeroService.rst","api/etho.services.ZeroService.rst","api/etho.services.camera.base.rst","api/etho.services.camera.basler.rst","api/etho.services.camera.dummy.rst","api/etho.services.camera.flycapture2.rst","api/etho.services.camera.hamamatsu.rst","api/etho.services.camera.spinnaker.rst","api/etho.services.camera.spinnaker_old.rst","api/etho.services.camera.videocapture.rst","api/etho.services.camera.ximea.rst","api/etho.services.dlp.dlp_make_warpfiles.rst","api/etho.services.dlp.dlp_runners.rst","api/etho.services.utils.concurrent_task.rst","api/etho.services.utils.log_exceptions.rst","api/etho.utils.config.rst","api/etho.utils.runner.rst","api/etho.utils.shuffled_cycle.rst","api/etho.utils.sound.rst","api/etho.utils.tui.rst","api/etho.utils.zeroclient.rst","api_etho.rst","callbacks.md","cli.ipynb","configuration/calibration_led.md","configuration/calibration_speaker.md","configuration/configuration.rst","configuration/global.md","configuration/playlist.md","configuration/protocol.md","hardware/camera.md","hardware/hardware.rst","hardware/nidaq.md","hardware/projector.md","hardware/rpi.md","hardware/scanimage.md","index.rst","install.md","logging.md","tutorial.md"],objects:{"etho.call":[[1,0,0,"-","client"],[2,0,0,"-","client_old"],[3,0,0,"-","ephys"],[4,0,0,"-","panoptikum"],[5,0,0,"-","rpi"],[6,0,0,"-","vr"]],"etho.call.client":[[1,1,1,"","cli_progress"],[1,1,1,"","client"]],"etho.call.client_old":[[2,1,1,"","client"]],"etho.cli":[[7,1,1,"","init"],[7,1,1,"","main"],[7,1,1,"","no_gui"],[7,1,1,"","version"]],"etho.gui":[[8,0,0,"-","CamPreview"],[9,0,0,"-","ThuPreview"],[10,0,0,"-","app"],[11,0,0,"-","wxBusyDialog"],[12,0,0,"-","wxCam"],[13,0,0,"-","wxCtrl"],[14,0,0,"-","wxCtrl_ephys"],[15,0,0,"-","wxCtrl_rpi"],[16,0,0,"-","wxCtrl_vr"],[17,0,0,"-","wxDangerDialog"]],"etho.gui.app":[[10,2,1,"","MainWindow"],[10,2,1,"","PandasModel"],[10,2,1,"","RunDialog"],[10,2,1,"","TableView"],[10,1,1,"","main"]],"etho.gui.app.PandasModel":[[10,3,1,"","columnCount"],[10,3,1,"","data"],[10,3,1,"","flags"],[10,3,1,"","headerData"],[10,3,1,"","rowCount"],[10,3,1,"","setData"]],"etho.gui.app.RunDialog":[[10,3,1,"","accept"],[10,3,1,"","reject"]],"etho.gui.wxBusyDialog":[[11,2,1,"","BusyDialog"],[11,2,1,"","Example"]],"etho.gui.wxCam":[[12,2,1,"","Frame"],[12,2,1,"","Panel"]],"etho.gui.wxCtrl":[[13,2,1,"","Frame"]],"etho.gui.wxCtrl_ephys":[[14,2,1,"","Frame"]],"etho.gui.wxCtrl_rpi":[[15,2,1,"","Frame"]],"etho.gui.wxCtrl_vr":[[16,2,1,"","Frame"]],"etho.gui.wxDangerDialog":[[17,2,1,"","DangerDialog"],[17,2,1,"","Example"]],"etho.services":[[18,0,0,"-","BLTZeroService"],[19,0,0,"-","CamZeroService"],[20,0,0,"-","DAQZeroService"],[21,0,0,"-","DLPZeroService"],[22,0,0,"-","GCMZeroService"],[23,0,0,"-","NICounterZeroService"],[24,0,0,"-","Opt2ZeroService"],[25,0,0,"-","RelayZeroService"],[26,0,0,"-","SndZeroService"],[27,0,0,"-","TemplateZeroService"],[28,0,0,"-","ThuAZeroService"],[29,0,0,"-","ThuZeroService"],[30,0,0,"-","ZeroService"]],"etho.services.BLTZeroService":[[18,2,1,"","BLT"]],"etho.services.BLTZeroService.BLT":[[18,3,1,"","cleanup"],[18,3,1,"","is_busy"],[18,3,1,"","test"]],"etho.services.CamZeroService":[[19,2,1,"","CAM"]],"etho.services.CamZeroService.CAM":[[19,3,1,"","cleanup"],[19,3,1,"","is_busy"],[19,3,1,"","test"]],"etho.services.DAQZeroService":[[20,2,1,"","DAQ"]],"etho.services.DAQZeroService.DAQ":[[20,3,1,"","cleanup"],[20,3,1,"","is_busy"],[20,3,1,"","test"]],"etho.services.DLPZeroService":[[21,2,1,"","DLP"]],"etho.services.DLPZeroService.DLP":[[21,3,1,"","cleanup"],[21,3,1,"","is_busy"],[21,3,1,"","test"]],"etho.services.GCMZeroService":[[22,2,1,"","GCM"]],"etho.services.GCMZeroService.GCM":[[22,3,1,"","cleanup"],[22,3,1,"","is_busy"],[22,3,1,"","test"]],"etho.services.NICounterZeroService":[[23,2,1,"","NIC"]],"etho.services.NICounterZeroService.NIC":[[23,3,1,"","cleanup"],[23,3,1,"","is_busy"],[23,3,1,"","test"]],"etho.services.Opt2ZeroService":[[24,2,1,"","OPT2"]],"etho.services.Opt2ZeroService.OPT2":[[24,3,1,"","cleanup"],[24,3,1,"","is_busy"],[24,3,1,"","test"]],"etho.services.RelayZeroService":[[25,2,1,"","REL"]],"etho.services.RelayZeroService.REL":[[25,3,1,"","cleanup"],[25,3,1,"","is_busy"],[25,3,1,"","test"]],"etho.services.SndZeroService":[[26,2,1,"","SND"]],"etho.services.SndZeroService.SND":[[26,3,1,"","cleanup"],[26,3,1,"","is_busy"],[26,3,1,"","test"]],"etho.services.TemplateZeroService":[[27,2,1,"","TMP"]],"etho.services.TemplateZeroService.TMP":[[27,3,1,"","cleanup"],[27,3,1,"","is_busy"],[27,3,1,"","test"]],"etho.services.ThuAZeroService":[[28,2,1,"","THUA"]],"etho.services.ThuAZeroService.THUA":[[28,3,1,"","cleanup"],[28,3,1,"","is_busy"],[28,3,1,"","test"]],"etho.services.ThuZeroService":[[29,2,1,"","THU"]],"etho.services.ThuZeroService.THU":[[29,3,1,"","cleanup"],[29,3,1,"","is_busy"],[29,3,1,"","test"]],"etho.services.ZeroService":[[30,2,1,"","BaseZeroService"]],"etho.services.ZeroService.BaseZeroService":[[30,3,1,"","cleanup"],[30,3,1,"","information"],[30,3,1,"","init_local_logger"],[30,3,1,"","is_busy"],[30,3,1,"","service_start"],[30,3,1,"","service_stop"],[30,3,1,"","test"]],"etho.services.camera":[[31,0,0,"-","base"],[32,0,0,"-","basler"],[33,0,0,"-","dummy"],[34,0,0,"-","flycapture2"],[35,0,0,"-","hamamatsu"],[36,0,0,"-","spinnaker"],[37,0,0,"-","spinnaker_old"],[38,0,0,"-","videocapture"],[39,0,0,"-","ximea"]],"etho.services.camera.spinnaker_old":[[37,2,1,"","Spinnaker_OLD"]],"etho.services.camera.spinnaker_old.Spinnaker_OLD":[[37,3,1,"","get"],[37,3,1,"","reset"]],"etho.services.dlp":[[40,0,0,"-","dlp_make_warpfiles"],[41,0,0,"-","dlp_runners"]],"etho.services.dlp.dlp_make_warpfiles":[[40,1,1,"","create_warpfile"],[40,1,1,"","get_transformation_matrices"]],"etho.services.dlp.dlp_runners":[[41,2,1,"","DLP_runner"],[41,2,1,"","LED_blinker"],[41,2,1,"","ObjectCirclesGrid"],[41,2,1,"","ObjectMoverSizer"],[41,1,1,"","register_runner"]],"etho.services.dlp.dlp_runners.DLP_runner":[[41,3,1,"","destroy"],[41,3,1,"","status"],[41,3,1,"","update"]],"etho.services.dlp.dlp_runners.LED_blinker":[[41,3,1,"","destroy"],[41,3,1,"","status"],[41,3,1,"","update"]],"etho.services.dlp.dlp_runners.ObjectCirclesGrid":[[41,3,1,"","status"],[41,3,1,"","update"]],"etho.services.dlp.dlp_runners.ObjectMoverSizer":[[41,3,1,"","status"],[41,3,1,"","update"]],"etho.services.utils":[[42,0,0,"-","concurrent_task"],[43,0,0,"-","log_exceptions"]],"etho.services.utils.concurrent_task":[[42,2,1,"","ConcurrentTask"],[42,2,1,"","Faucet"],[42,2,1,"","SharedNumpyArray"]],"etho.services.utils.concurrent_task.Faucet":[[42,3,1,"","get"]],"etho.services.utils.concurrent_task.SharedNumpyArray":[[42,3,1,"","get"],[42,3,1,"","poll"],[42,3,1,"","put"],[42,4,1,"","stale"]],"etho.services.utils.log_exceptions":[[43,1,1,"","for_all_methods"],[43,1,1,"","log_exceptions"]],"etho.utils":[[44,0,0,"-","config"],[45,0,0,"-","runner"],[46,0,0,"-","shuffled_cycle"],[47,0,0,"-","sound"],[48,0,0,"-","tui"],[49,0,0,"-","zeroclient"]],"etho.utils.config":[[44,1,1,"","defaultify"]],"etho.utils.runner":[[45,2,1,"","Runner"]],"etho.utils.runner.Runner":[[45,3,1,"","is_online"],[45,3,1,"","is_running"],[45,3,1,"","kill"],[45,3,1,"","kill_python"],[45,3,1,"","pid"],[45,3,1,"","run"]],"etho.utils.shuffled_cycle":[[46,2,1,"","shuffled_cycle"]],"etho.utils.sound":[[47,1,1,"","build_playlist"],[47,1,1,"","make_pulse"],[47,1,1,"","make_sine"],[47,1,1,"","normalize_table"],[47,1,1,"","parse_cell"],[47,1,1,"","parse_pulse_parameters"],[47,1,1,"","parse_table"],[47,1,1,"","select_channels_from_playlist"]],"etho.utils.tui":[[48,1,1,"","df_to_table"]],etho:[[7,0,0,"-","cli"]]},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"],"4":["py","property","Python property"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method","4":"py:property"},terms:{"0":[30,37,40,41,42,52,56,57,58,64,66],"001":42,"011111111111111112":41,"04":54,"08":54,"0m":52,"0servic":30,"1":[18,19,20,21,22,23,24,25,26,27,28,29,30,40,41,52,54,56,57,58,64,67],"10":[37,58,66],"100":[56,57,58],"1000":[56,57,58],"10000":[54,58],"1080":40,"10800":41,"10cm":54,"10m":58,"11":52,"110423":68,"1280x720":19,"129":67,"13":[19,52],"1300":58,"14":52,"1420":56,"1442":56,"1443":56,"1444":56,"1445":56,"1447":56,"1448":56,"1449":56,"1461":56,"15":52,"150":56,"1500":56,"16":[52,58],"1640x1232":19,"168":[18,19,20,21,22,23,24,25,26,27,28,29,30,56,58,67],"169":56,"17":58,"180":[41,58],"192":[18,19,20,21,22,23,24,25,26,27,28,29,30,56,58],"1920":40,"1v":57,"2":[40,52,56,57,58,68],"20":58,"200":[56,57,58],"2000":[56,57],"2019":54,"20200818":54,"2023":52,"21":52,"22":58,"23":66,"24":58,"25":[52,58],"250":56,"2m":[57,64],"3":[25,41,52,56,58,66],"30":[56,58],"300":56,"30959651":58,"350":56,"360":[41,58],"38":52,"3v":25,"4":[40,56,68],"400":56,"40fp":19,"42":58,"4242":56,"4243":56,"4244":56,"4245":56,"4247":56,"4248":56,"4249":56,"44100":58,"450":56,"4m":52,"5":[56,57],"500":56,"5000":58,"5400":41,"5_000":58,"5m":[57,58],"5v":25,"6":[52,56,57,66],"60":41,"600":56,"640":58,"64bit":52,"7":[56,58,66],"700":56,"78":58,"8":[52,56],"800":56,"9":[52,56],"90":58,"900":56,"90fp":19,"abstract":30,"break":54,"class":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,37,41,42,43,45,46,47,51],"default":[1,7,10,18,19,20,21,22,23,24,25,26,27,28,29,30,37,41,42,45,48,52,56,58,64,66,68],"do":[19,41,57,66,68],"export":54,"float":[37,41,42,45,47,57],"function":[18,19,20,21,22,23,24,25,26,27,28,29,30,40,42,43,44],"import":[0,7,52,56,57,58],"int":[10,18,19,20,21,22,23,24,25,26,27,28,29,30,40,41,45],"new":54,"return":[18,19,20,21,22,23,24,25,26,27,28,29,30,37,40,41,42,45,47,48,57],"static":0,"true":[1,30,42,45,47,48,58],"try":[28,29,54],"while":68,A:[0,43,48,54,55],Be:54,For:[7,41,42,51,58,66,68],If:[45,57],Is:68,It:54,NOT:[52,68],ON:58,ONES:56,OR:58,One:57,Or:57,THE:[56,68],TO:56,The:[0,40,43,48,54,57,58,64],Then:41,Will:[40,41,57],_build:0,_description_:[1,2,45,52],_dlp:58,_done_ev:1,_queue:1,_stop_ev:1,_summary_:[1,2,45],_type_:1,abbrevi:58,abcd:46,about:[30,68],abov:67,absolut:40,absolute_path_to_fil:41,acbd:46,accbbdbdcaba:46,accept:[10,41],access:[0,42,56],accord:54,acq:[37,64],acquisit:[57,64],across:57,activ:66,adafruit:[28,29,66],adafruit_dht:66,adafruit_python_dht:[28,29],add:[41,48,57,64,68],address:45,adjust:57,advertis:56,after:[54,56,57],ai0:[54,58,68],ai1:68,ai2:68,aliv:30,all:[30,37,41,43,45,54,56,57,58,68],allow:55,alreadi:42,also:[57,68],alwai:42,amp:[54,68],amplitud:[24,58],an:[1,54,56],analog:[20,54,57,68],analog_chans_in:58,analog_chans_out:58,analog_in:68,analog_in_info:68,analog_out:68,analog_out_info:68,analysi:54,ani:[1,10,30,41,42,68],annotate_frame_num:58,anyth:37,ao0:[58,68],ao1:[58,68],api:66,appli:58,apt:66,ar:[0,42,54,55,58,64,67,68],arduino:[28,29],arg:[11,17,18,19,20,21,22,23,24,25,26,27,28,29,30,41,42],argument:52,arm64:52,arm:[52,64],arrai:[37,41,42,47,57,66],assess:42,associ:68,asynchron:45,attach:42,attenu:[54,56,57],attribut:45,audio:[58,68],avail:52,avi:58,back:68,backend:58,backlight:58,ball_info:41,bandwidth:51,base:[30,41,58],basecallback:51,basezeroservic:30,basi:55,basler:66,bdca:46,been:[42,67],befor:[57,64],begin:54,being:[51,57],below:[41,57,58],between:42,bin3:58,binari:58,blink:41,blinker:41,block:[42,46,47,58,68],blt:18,bnc:54,book:0,bool:[1,2,7,10,42,45,47,48],both:58,box:54,bracket:57,bright:58,broadcast:67,build_playlist:47,built:0,bundl:20,busi:[18,19,20,21,22,23,24,25,26,27,28,29,30],busydialog:11,button:64,c:[0,37,54,56,58,66,68],c_doubl:42,calcul:54,calib:54,calibr:68,call:[30,41,42,52,68],callabl:[41,42,47],callback:[57,58,68],cam:[19,37,56,58,68],cam_serialnumb:58,cam_typ:[58,68],camera:[19,51,56,58,66,68],can:[19,24,45,51,56,57,58,67,68],cannot:25,card:68,cast:[47,57],cdab:46,cell:[47,57],center:54,chang:[30,54,68],channel:[47,54,58,64,68],channels_to_keep:47,check:[7,30,56],child:10,chunk:51,circl:41,circuitpython:66,cl:41,clang:52,classnam:[41,58],clean:0,cleanli:45,cleanup:[18,19,20,21,22,23,24,25,26,27,28,29,30],cli:52,cli_progress:1,click:54,client:[2,68],clock:[57,64],clock_pulsedur_pulsepau:57,clock_sourc:58,clockwis:40,close:[30,41],cm2:53,cmd:45,cmdline:45,cmo:66,code:55,coincid:54,col:47,collect:44,column:[48,57],columncount:10,com:[0,28,29,66],come:66,comm:42,comma:57,command:[7,45],common:42,comms_kwarg:42,commun:[30,42],concaten:[47,57],concurrenttask:42,conda:[0,52,66,68],condadir:68,config:[7,56,58,66],config_file_nam:54,configur:[57,58,64],connect:[28,29,42,54,68],consist:42,consol:67,construct:42,contain:[42,57,58],content:56,continu:[37,57],control:[24,55,57,58,68],convert:[37,44,48,57],coolcallback:51,coordin:40,copi:54,copybutton:0,core:[47,48,66],corner:40,correct:[54,56,57,64],correctli:54,correspond:54,could:[7,41],count:48,coupl:51,creat:[40,54,57,66,68],create_warpfil:40,crf:58,csv:54,ctype:42,current:[42,57,58],cut:54,cycl:46,d:[44,52],da:[7,68],dangerdialog:17,daq:[20,41,51,56,58,64,68],daqexpress:54,daqmx:[52,66],dark:0,data:[10,40,42,51,54,58,64],datafram:[30,47,48,57],date:54,datenam:64,db:57,dcam:66,de:25,debug:[1,2,7,52,68],decor:[41,43],defaultdict:44,defaultfactori:44,defaultifi:44,defin:[30,41,54,55,57],defopt:66,delai:[57,64],delaypost:57,deleg:42,delimit:57,dep:66,deriv:30,desc:2,descript:[18,19,20,21,22,23,24,25,26,27,28,29,30,37,41,42,47,57],desir:[47,54],destroi:41,detail:[57,64],determin:47,df_to_tabl:48,dht22:[28,29],dht:66,diagram:68,dict:[1,30,41,42,44,51],dictionari:[1,56,57],didnt:45,differ:[53,57,58,68],differenti:54,digit:[20,57,64],digital_chans_out:64,directli:[28,29],directori:[40,56,57,58,68],disabl:68,disown:45,disp:58,disp_fast:58,displai:[7,30,42,67],displayrol:10,distanc:54,dlp:[21,58],dlpzeroservic:41,doc:[0,7,57,64,66],document:54,doe:57,don:42,done:1,done_ev:[1,10],doubl:54,down:30,drive:53,driver:[66,68],dtype:[47,57],duplic:[47,57],dur:64,durat:[1,47,57],dure:[41,68],e:[41,45,47,54,55,57,58,66,68],each:[47,51,55,56,57,58,64,67,68],ed:42,edit:10,editrol:10,eg:40,either:[42,47,58],element:57,empty_valu:42,en:[19,66],enabl:64,end:[42,54,57,64],ensur:[41,42],entri:[47,57,68],env:[58,68],environ:[56,66,68],essenti:68,etc:[18,19,20,21,22,23,24,25,26,27,28,29,30,41,55],etho:[52,58,64,66,68],ethoconfig:[52,54,56,57,68],ethoconfig_rpi7_10cm_aft:54,ethoconfig_rpi7_10cm_befor:54,ethomast:[56,57,58,67],ethoservic:30,eu:66,even:[45,57],event:[1,51],everi:[41,51,54,58],everyth:54,ex:[56,58,68],exampl:[11,17,41,54,68],except:[7,43,52],execut:[56,68],exit:[45,52],expect:[1,41],experi:[1,55,58],expos:42,exposur:58,exposuremod:58,expt:1,extens:57,extern:[41,57,64,68],exterrn:64,extra:41,fabric:[45,66],factor:56,fail:[7,18,19,20,21,22,23,24,25,26,27,28,29,30,52],failur:45,fall:[57,64],fals:[1,2,7,10,30,45,52,58],faster:58,faucet:42,feb:52,feedback:42,fewer:57,ffmpeg:58,ffmpeg_param:58,fictrac:41,field:[41,57,58],fig:54,figur:56,file:[0,7,10,30,40,41,51,54,55,56,57,58,64,66,67],filenam:[41,57],fill:57,finish:[30,54],first:[41,42,54,57,64,68],fixedfp:58,flag:10,flammkuchen:66,flash:66,flea3:37,flir:[37,66,68],float64:42,flow:55,fly:[54,57],flybal:58,flycaptur:[52,66,68],flycapture2:58,focu:64,folder:[7,10,54,55,56,66,68],follow:[30,57,58,68],for_all_method:43,forg:[0,52,66],forget:68,format:[37,58],fov:19,fp:56,frame:[12,13,14,15,16,41,47,48,51,55,57,58,64],frame_height:58,frame_numb:41,frame_offi:58,frame_offx:58,frame_r:58,frame_width:58,frameheight:58,framer:58,framewidth:58,free:[18,19,20,21,22,23,24,25,26,27,28,29,30,37,41],freq:57,frequenc:[47,56,57],fresh:42,friendli:51,from:[1,8,10,37,40,41,47,52,54,56,57,58,64,66,68],fs:[47,57],full:[19,46,51,57,68],fulli:0,fun:1,func:41,furo:0,futur:66,g:[41,45,47,54,55,57,58,66,68],gain:58,gamma:58,gcm:[22,58,68],gener:[41,56,57,58,68],geometr:41,get:[37,40,42,45,66],get_transformation_matric:40,gevent:66,gh:0,ghp:0,git:66,github:[0,28,29,66],give:[48,54],given:57,global:[30,55,57],go:54,goal:54,goe:37,good:54,gpio:[24,25,58],gpiozero:[24,25,66],gpu:58,graph:54,graphic:10,grasshopp:37,great:42,green:58,grid:41,grid_direct:41,grid_direction_change_fram:41,grid_spe:41,gui:[7,52,66],h5:58,h5py:[52,66],h:52,ha:[42,47,55,58,67],hacki:25,hamamatsu:66,hardwar:[7,30,55,63],have:[41,42,57,66,68],hdf:58,head:[10,30,52,56,67],head_ip:[18,19,20,21,22,23,24,25,26,27,28,29,30],header:57,headerdata:10,headlogg:67,height:[19,40],help:52,helper:42,here:[41,56,68],hhmmss:68,hierarchi:54,home:56,homographi:40,host:[1,2,12,13,14,15,16,17,45,52,56,58],host_is_remot:45,host_is_win:45,host_yyyymmdd:68,how:[7,41],html:[0,7,19,66],http:[0,19,24,28,29,66],humid:[28,29,51,58,66],hz:[47,57,58],i:54,ideal:68,identifi:30,idl:[18,19,20,21,22,23,24,25,26,27,28,29,30],ignor:41,illumin:58,imag:[0,37,40,52,64],image_height:40,image_timestamp:37,image_width:40,implement:30,implicitli:57,importantli:68,includ:[54,68],independ:[24,42],index:48,index_nam:48,indic:[30,42],individu:[24,51,58,68],inf:64,info:[7,67],inform:[30,67,68],ini:57,init:[7,37,41,52,66],init_local_logg:[30,67],initi:[7,25,41,67],inlin:0,input:[20,54,68],insid:54,instal:[0,7,63],instanc:[18,19,20,21,22,23,24,25,26,27,28,29,30,41,48,57],instruct:[7,68],instrument:[54,68],intens:[47,57,68],intercept:67,interfac:[7,10,42,58],interv:58,intial:[1,57],invok:45,io:[19,24,66],ip:[15,16,45,56,67],ip_address:30,ipynb:54,ipython:66,ir:58,is_busi:[18,19,20,21,22,23,24,25,26,27,28,29,30],is_onlin:45,is_run:45,item:57,itemdatarol:10,itemflag:10,iter:46,its:54,janclemenslab:[0,7,66],just:57,kei:57,kill:45,kill_python:45,kw:[11,17],kwarg:[18,19,20,21,22,23,24,25,26,27,28,29,30,41,42],kwignor:41,lab:54,lambda:44,larg:64,last:[42,57,64],latest:[0,66],least:45,leav:64,led:[24,41,58,68],led_blink:[41,58],led_blinker_fil:41,led_dur:[41,58],led_fram:[41,58],led_po:41,led_siz:41,ledamp:58,ledd1b:68,left:40,length:47,letter:[30,58],level:67,libgpiod2:66,librari:[25,52,68],lighcraft:66,light:[0,57],like:[42,51,57],limit:[19,58],line1:64,line2:64,line3:64,line:7,list:[41,42,45,47,54,56,57,58,68],liter:42,live:8,load:57,load_sound:57,local:[30,45,67],localhost:[1,56,68],localhost_20230401:68,locallu:45,log:[30,41,43,51,56,58,68],logfilenam:[30,67],logger:[43,56,67],logging_port:[18,19,20,21,22,23,24,25,26,27,28,29,30,67],loggingfold:56,logic:42,longest:57,loop:[41,51,64],loopback:68,loos:42,loss:42,low:51,lower:68,m:68,machin:45,maco:52,main:[7,10,52],mainwindow:10,make:[0,47,57,68],make_puls:47,make_sin:47,mamba:[0,66],mambaforg:68,manag:45,manipul:41,manual:54,map:57,match:[45,57],matplotlib:58,matric:40,maxdur:58,measur:[53,54],mediocre_stim:57,mesh:40,mess:55,messag:[30,41,52,67],method:[30,43,47],mgen:56,mic:54,mic_calibr:54,mic_calibration_20190408:54,micromanipul:54,microphon:54,mimic:42,mind:42,miniconda3:56,miniconda:58,miniforg:66,minim:68,mirror:57,mirror_l:57,miss:54,mm2:57,mm:57,mode:[0,19,57],model:10,model_dict:41,modul:67,more:68,move:41,mq013cg:58,ms:[47,57,68],msgpack:66,much:58,multidimension:57,multipl:24,multiprocess:42,must:42,mw:[53,57],myst:0,n:66,name:[1,40,41,45,48,51,54,55,56,58,68],nation:[54,68],nb:[0,64],nb_sampl:47,nb_screen:40,nb_screensx3x3:40,ncb:[54,56,58],ncircl:41,ndarrai:[37,40],need:[0,30,41,54,56,57,58],nest:44,network:30,never:[42,58],new_consol:45,next:[57,64],ni:[52,66,68],nic:[23,68],nm:57,no_gui:7,node:[58,67],none:[1,2,10,12,18,19,20,21,22,23,24,25,26,27,28,29,30,37,42,43,45,46,47,48,57],nonzero:45,normal:[40,47,54,57],normalize_t:[47,57],note:[41,57,66],notebook:54,np:[37,41,42,47],npz:41,ns:58,number:[41,52,57,58,64],numpi:[40,42,47,52,57,66],nvidia:58,o:[55,57],obj:48,object:[41,42,43,58],objectcirclesgrid:41,objectmovers:41,occur:43,off:25,offset:54,old:66,older:[37,66,68],onboardclock:58,one:[43,45,47,57],onli:[37,47,58,66],onlin:45,onset:54,open:[10,54,68],opencv:[58,66],oper:63,opt2:[24,58],optim:37,option:[1,2,10,12,18,19,20,21,22,23,24,25,26,27,28,29,30,37,41,42,43,45,47,48,52,58,67,68],opto:[58,68],orca:66,order:58,org:[0,7,66],orient:10,os:10,out:[51,54,56,58],output:[20,54,57,64,68],outsid:1,over:[42,51,56],overrid:45,own:41,p:52,packag:52,pad:57,page:0,pair:56,panda:[47,48,52,57,66],pandas_datafram:48,pandasmodel:10,panel:[0,12],param:[41,43,48,58],paramet:[1,2,7,10,18,19,20,21,22,23,24,25,26,27,28,29,30,37,40,41,42,45,46,47,56,58,68],parent:[10,12,68],pars:[47,56],parse_cel:47,parse_pulse_paramet:47,parse_t:[47,57],parsed_t:57,part:54,partial:[37,45],pass:[41,42,43,48,51],path:[40,58,68],pathlik:10,pattern:24,paus:57,pb_ui:64,pc:[54,66],pd:[30,47,57],pdur:57,pend:57,per:[55,57,58],period:47,phase:[47,57],photodiod:41,photomet:53,pi:[8,24,47,58,66],picamera:[19,58,66],pickl:58,pid:45,pillow:66,pin:[24,25,58],ping:[30,45],pip3:66,pip:[0,66],pipe:42,pixel:[37,40,58,64],place:54,plai:[55,68],playback:[54,57,58,68],playback_calibr:54,playlist:[10,47,52,54,55,56,64],playlist_channel:58,playlist_fold:[10,52],playlistfil:[1,2,52],playlistfilenam:57,playlistfold:[10,52,56],plot:58,plot_fast:58,point:[54,56],pointer:37,pointgrei:[66,68],poll:42,pong:30,popul:48,port0:64,port:[30,56,68],portrang:56,posit:[41,52],possibl:[19,28,29],post:57,postpop:66,power:54,ppau:57,practic:54,pre:[57,66],prefix:52,prepend:58,preview:[1,12,52],primit:42,print:[30,54,58],probabl:[42,58],problem:19,problemat:57,process:[42,45,51],produc:51,product:66,program:52,progress:[30,52],proj_roi:40,project:[40,66],projection_height:40,projection_width:40,projector:58,projector_dir:40,promis:45,proper:0,properti:[30,42],prot:[41,58],protfil:68,protocol:[10,41,51,52,54,55,56,64],protocol_filenam:12,protocol_fold:[10,52],protocolfil:[1,2,52,58],protocolfold:[10,52,56],provid:42,psutil:66,psychopi:[41,58],ptg:56,publish:30,pul:57,pul_5_10_10_0:57,pul_pulsedur_pulsepau_pulsenumber_pulsedelai:57,pull:37,puls:[47,57],pulsedelai:47,pulsedur:47,pulsenumb:47,pulsepau:47,push:0,put:42,py:54,pydaqmx:[66,68],pygam:58,pylab:66,pylablib:66,pylon:66,pypylon:66,pyqtgraph:[52,58,66],pyseri:66,pyside2:52,pyside6:66,python:[45,52,56,58,67,68],python_ex:[45,56,58,68],pyyaml:[56,66],pyzmq:66,qmodelindex:10,qt:[10,52],qtpy:[52,66],queri:45,queue:[1,42],queue_tot:10,quickli:68,rad:57,rais:[37,42,45],random:58,raspberi:66,raspberri:24,raspbian:66,rate:[47,51,54,55],raw:57,raw_tabl:57,re:54,read:[41,42,51,56,58],read_tabl:57,readconfig:58,readthedoc:[19,24,66],realtim:42,receiv:8,recogn:45,recommend:66,record:[19,54,58,64,68],recording_nam:54,rect:[41,58],red:58,register_runn:41,reject:10,rel:[25,58],relai:[25,58],releas:19,remain:[57,66],remot:[45,56,57,64],render:0,replac:68,requir:[0,25,57,66,68],reset:37,resiz:41,resourc:[18,19,20,21,22,23,24,25,26,27,28,29,30,37,41],respons:30,result:45,rich:[48,66],rich_inform:30,rig:[54,57],rise:[57,64],robust:41,roi:40,role:[10,55],roughli:54,row:[47,48,57],rowcount:10,rpi3:56,rpi4:56,rpi5:56,rpi6:56,rpi7:[54,56],rpi7_10cm_aft:54,rpi7_10cm_befor:54,rpi8:56,rpi9:56,rpi:[25,28,29,54,66],run:[0,30,42,45,58],run_loc:45,rundialog:10,runner:[41,58],s0:54,s:[51,52,54,57,58,67],safe:42,same:[41,57],sampl:[41,47,54,55,57,64],samplingr:[47,58],save:[40,42,52,54,57,58,64,66,68],save_avi:[58,68],save_avi_fast:58,save_avi_vidread:58,save_directori:[58,68],save_h5:[58,68],save_prefix:[1,2,52],save_timestamp:[58,68],savedlp_h5:58,savefilenam:64,scale:57,scan:64,scanimag:57,scanimage_next:57,scipi:[52,66],scm:56,screen:41,sdk:[37,52,66,68],second:[37,47,51,58,68],section:56,see:[41,45,57,58,64],select:[41,47,54,64,68],select_channels_from_playlist:47,self:[10,30,67],send:42,sensor:[19,28,29,51,58,66],sent:64,separ:[57,64],serial:[18,19,20,21,22,23,24,25,26,27,28,29,30,58],serialnumb:37,server:[30,54],server_start:30,server_stop:30,servic:[1,56,58,67],service_nam:30,service_port:[18,19,20,21,22,23,24,25,26,27,28,29,30],service_start:30,service_stop:30,serviceeas:30,services_logging_port:56,services_working_port:56,session:64,set:[1,19,37,41,55,57,58],setdata:10,setup:[30,68],shape:[40,42],share:42,sharednumpyarrai:42,shorter:57,shortli:19,should:[30,37,40,41,43,54,57,58,64,66],show:[48,52],show_index:48,show_progress:1,show_test_imag:2,shuffl:[46,47,57,58,64],shut:30,shutter:68,shutter_spe:58,shutterspe:58,si_next:[57,64],si_start:[57,64],si_stop:[57,64],signal:[1,57,64],silencepost:[57,64],silencepr:[57,64],silent:54,simpli:57,simplic:51,sin:57,sin_100_0_3000:57,sin_200_0_2000:57,sin_frequency_phase_dur:57,sinc:[25,42,57],singl:57,sinusoid:[47,57],size:[41,55,56],sle:56,sleep:37,slower:42,slp:56,small:68,snd:[26,56,58],so:[25,57],some:66,someth:68,sound:[55,57,58,68],sound_ord:47,soundboard:66,soundlist:47,sourc:[1,2,7,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,37,40,41,42,43,44,45,46,47,48],specif:[55,57,58,66],specifi:[41,54,64,67,68],speed:42,sphinx:0,sphinxcontrib:0,spinnak:[37,52,58,66,68],squar:[41,47,57],ssh:[45,56],stabl:66,stale:42,stamp:37,start:[1,30,54,56,57,64,66,68],state:[18,19,20,21,22,23,24,25,26,27,28,29,30],statu:[41,56],step:68,sth:37,stim2:57,stim:[41,56],stim_on_chan1:57,stim_on_chan2:57,stimfilenam:[47,57],stimfold:[56,57],stimuli:[57,58,64],stimulu:[47,54,55,58],stop:[1,30,42,54,57,64],stop_ev:[1,10],store:[40,68],str:[1,2,10,12,18,19,20,21,22,23,24,25,26,27,28,29,30,40,41,42,45,46,47,48,57],stream:8,streamwatch:45,string:[41,47],strip:57,stuff:66,subfold:68,sudo:66,summari:[18,19,20,21,22,23,24,25,26,27,28,29,30,37,42,47],superstimulu:57,suppli:54,support:[37,52,58,66],sure:[47,54,57],surround:57,sync:[41,58],synchron:[20,42],system:[7,37,55],system_timestamp:37,t:[42,57],tab:[0,54,57],tabl:[47,48,57],tableview:10,task:[1,20,42,54],task_kwarg:42,taskstopsign:42,tcp:30,tell:42,temperatur:[28,29,51,58,66],tempor:24,termin:[30,64],test:[18,19,20,21,22,23,24,25,26,27,28,29,30,52,54,68],test_calibr:54,text:57,than:[19,57],thei:55,thi:[0,41,52,57,58,64,68],thorlab:[53,68],those:19,thread:[1,42],three:[30,57],through:68,throughput:37,throught:64,thu:[29,58],thua:[28,56,58],time:[37,54,57],timeout:[37,42,45],timestamp:58,tmp:27,todo:66,toggl:25,tool:42,top:40,total:57,trace:58,trail:68,train:[47,57],transform:40,transformation_matric:40,translat:47,tree:0,trial:47,trigger:[57,64,68],tui:30,tupl:[30,37,42],turn:25,two:[47,68],txt:54,type:[37,40,41,42,44,45,47,48,54,55,57],typic:[57,68],ug:56,ukme04:54,unaccept:42,under:[40,54],unexpectedexit:45,union:[10,45,47],uniqu:30,unit:[54,57],unknown:42,uns:42,unspecifi:41,unus:[56,57,58],up:[19,41],updat:[41,42],us:[1,8,24,25,41,53,54,56,57,58,66,67,68],usag:52,use_servic:[58,68],use_warp:58,user:[10,54,55,56,58],usual:[19,54],utc:37,util:[30,57,58],v0:52,v1:52,v2:52,v3:52,v5:52,valid:58,valu:[10,41,42,48,52,54,56,57,64],valueerror:[37,42],variant:41,veri:[25,64],version:[0,7,66],via:[0,24,28,29,42,45,56,57,58,64,67,68],video:[8,58,66,68],video_denois:58,videoprocessingframework:58,videowrit:58,vidgear:66,vidread:[58,66],visual:[41,58],voltag:53,vpf:58,vpf_bin_path:58,w:[55,57],wa:45,wai:55,walk:68,want:[19,42,66],warn:[45,52,67],warp:40,warpfil:[40,58],warpmesh_1140x912:58,warpmesh_:40,watchererror:45,wav:57,waveform:47,we:[25,66,68],were:54,what:57,when:[30,41,42,54,56],where:[40,58,68],whether:[18,19,20,21,22,23,24,25,26,27,28,29,30,42],which:[40,45,47,56,57,68],whitespac:57,whole:54,width:[19,40],wiki:66,win:41,window:41,wire:68,work:[41,56,58,66,68],working_directori:58,would:54,wrap:[42,43,47],wrapper:42,write:42,wrong:37,www:66,wxctrl:68,x:[37,40],ximea:[58,66,68],y:[37,40,66],yaml:[56,58],yml:[10,52,54,68],you:[19,42,66,68],your:[41,68],z:58,zero:57,zeromq:8,zerorpc:66},titles:["Ethodrome documentation","etho.call.client","etho.call.client_old","etho.call.ephys","etho.call.panoptikum","etho.call.rpi","etho.call.vr","etho.cli","etho.gui.CamPreview","etho.gui.ThuPreview","etho.gui.app","etho.gui.wxBusyDialog","etho.gui.wxCam","etho.gui.wxCtrl","etho.gui.wxCtrl_ephys","etho.gui.wxCtrl_rpi","etho.gui.wxCtrl_vr","etho.gui.wxDangerDialog","etho.services.BLTZeroService","etho.services.CamZeroService","etho.services.DAQZeroService","etho.services.DLPZeroService","etho.services.GCMZeroService","etho.services.NICounterZeroService","etho.services.Opt2ZeroService","etho.services.RelayZeroService","etho.services.SndZeroService","etho.services.TemplateZeroService","etho.services.ThuAZeroService","etho.services.ThuZeroService","etho.services.ZeroService","etho.services.camera.base","etho.services.camera.basler","etho.services.camera.dummy","etho.services.camera.flycapture2","etho.services.camera.hamamatsu","etho.services.camera.spinnaker","etho.services.camera.spinnaker_old","etho.services.camera.videocapture","etho.services.camera.ximea","etho.services.dlp.dlp_make_warpfiles","etho.services.dlp.dlp_runners","etho.services.utils.concurrent_task","etho.services.utils.log_exceptions","etho.utils.config","etho.utils.runner","etho.utils.shuffled_cycle","etho.utils.sound","etho.utils.tui","etho.utils.zeroclient","Developer API","Callbacks","Command-line interface","LED calibration","Speaker calibration","Configuration","Global configuration","Stimulus playlists","Experimental protocols","Cameras","Supported Hardware","National Instruments DAQmx cards","DLP projector","Raspberry PI","ScanImage","Etho documentation","Installation","Logging","Tutorial"],titleterms:{For:56,There:57,an:[52,68],analyz:54,anatomi:51,api:50,app:10,ar:57,base:31,basler:32,bltzeroservic:18,build:0,calibr:[53,54],call:[1,2,3,4,5,6],callback:51,camera:[31,32,33,34,35,36,37,38,39,59],campreview:8,camzeroservic:19,card:61,channel:57,cli:[7,68],client:1,client_old:2,command:52,concurrent_task:42,config:[44,52],configur:[55,56,66,68],control:64,daqmx:61,daqzeroservic:20,data:57,develop:50,displai:52,dlp:[40,41,62],dlp_make_warpfil:40,dlp_runner:41,dlpzeroservic:21,document:[0,65],dummi:33,ephi:3,etho:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,65],ethodrom:0,experi:[52,68],experiment:58,file:[52,68],flycapture2:34,folder:52,format:57,gcmzeroservic:22,global:56,graphic:52,gui:[8,9,10,11,12,13,14,15,16,17,68],hamamatsu:35,hardwar:[52,54,60,66,68],host:68,info:52,initi:[52,66],instal:[66,68],instrument:61,interfac:52,led:53,line:52,log:67,log_except:43,magic:57,make:[51,58],multi:57,name:57,nation:61,nicounterzeroservic:23,open:52,opt2zeroservic:24,option:66,own:51,packag:66,panoptikum:4,pars:[57,58],pi:63,playlist:[57,68],produc:68,projector:62,protocol:[58,68],publish:0,python:66,raspberri:63,relayzeroservic:25,result:54,rpi:[5,56],run:[54,68],runner:45,scanimag:64,servic:[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,51,68],set:[54,64],setup:54,sever:57,shuffled_cycl:46,sndzeroservic:26,softwar:[54,66],sound:47,speaker:54,specifi:57,spinnak:36,spinnaker_old:37,start:52,stimul:57,stimulu:[57,64],support:60,system:[52,68],templatezeroservic:27,test:66,thuazeroservic:28,thupreview:9,thuzeroservic:29,tui:48,tutori:68,up:54,usag:51,user:52,util:[42,43,44,45,46,47,48,49],version:52,videocaptur:38,vr:6,wai:57,wxbusydialog:11,wxcam:12,wxctrl:13,wxctrl_ephi:14,wxctrl_rpi:15,wxctrl_vr:16,wxdangerdialog:17,ximea:39,your:51,zerocli:49,zeroservic:30}}) \ No newline at end of file diff --git a/tutorial.html b/tutorial.html index 9ccf76d..b7c3cbb 100644 --- a/tutorial.html +++ b/tutorial.html @@ -12,6 +12,7 @@ + @@ -449,6 +450,8 @@

Produced files + +