From 491bbcde2a7995d83f26d6b303a01da9fc199f1c Mon Sep 17 00:00:00 2001 From: efish Date: Wed, 17 Jul 2019 11:00:19 +0200 Subject: [PATCH] [torus] add stimulus creation script --- torus/code/args.py | 6 + torus/code/multisensory_stimuli.py | 120 +++++ torus/relacs.cfg | 228 +++++++++ torus/relacsplugins.cfg | 771 +++++++++++++++++++++++++++++ 4 files changed, 1125 insertions(+) create mode 100644 torus/code/args.py create mode 100755 torus/code/multisensory_stimuli.py create mode 100644 torus/relacs.cfg create mode 100644 torus/relacsplugins.cfg diff --git a/torus/code/args.py b/torus/code/args.py new file mode 100644 index 0000000..cb657db --- /dev/null +++ b/torus/code/args.py @@ -0,0 +1,6 @@ +description = "Tool to create stimuli that drive the tuberous and ampullary system." +beat_help = 'The desired beat frequency for stimulating the tuberous system. (Default=20Hz)' +dc_help = 'The frequency of the low-frequency modulation driving the ampullary stimulus. (Default=20Hz)' +dt_help = 'Stepsize used to create the stimulus (default: 0.05ms, aka 20kHz sampling rate).' +maxfreq_help = "Maximum frequency for zap stimulus (default 100Hz)." +arguments = [ "frequency", "amplitude", "dc", "beat", "contrast" ] diff --git a/torus/code/multisensory_stimuli.py b/torus/code/multisensory_stimuli.py new file mode 100755 index 0000000..4a48746 --- /dev/null +++ b/torus/code/multisensory_stimuli.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import argparse +import args +import numpy as np +import matplotlib.pyplot as plt +from IPython import embed + + +class MultichannelStimulus(object): + + def __init__(self, namespace): + assert(namespace is not None) + assert(isinstance(namespace, argparse.Namespace)) + self._constrast_stimulus = None + self._zap_stimulus = None + self._phase_stimulus = None + self._eod_ampl = namespace.amplitude + self._eod_freq = namespace.frequency + self._df = namespace.beatfrequency + self._dcf = namespace.dcfrequency + self._outfile = namespace.outfile + self._dt = namespace.stepsize + self._maxfreq = namespace.maxfreq + self._zap_duration = 10.0 + self._contrast_sweep_duration = 5.0 + self._phase_sweep_duration = 5.0 + self.create_contrast_stim() + self.create_phase_stim() + self.create_zap_stim() + + + def create_contrast_stim(self): + t = np.arange(0, self._contrast_sweep_duration, self._dt) + sweep_up = np.linspace(0., 1.0, len(t)) + am = np.sin((self._eod_freq + self._df) * 2 * np.pi * t) + dc = np.sin(2*np.pi*self._dcf*t) + am_sweep = am * sweep_up + dc_sweep = dc * sweep_up + + self._contrast_stimulus = np.hstack((am_sweep, dc_sweep, am + dc_sweep, dc + am_sweep)) + header = {" ": "Contrast sweeps for ampullary and tuberous pathways", + "sd": 1.0, + "deltat": "%.5f s" % self._dt, + "eodf": self._eod_freq, + "df": self._df, + "dcf": self._dcf, + "T": "%.3f s" % (4 * self._contrast_sweep_duration)} + self.save_stim(np.arange(len(self._contrast_stimulus)) * self._dt, self._contrast_stimulus, header, + "contrast_sweep") + + def create_phase_stim(self): + t = np.arange(0, self._phase_sweep_duration, self._dt) + phase_sweep = np.linspace(0., 2*np.pi, len(t)) + am = np.sin((self._eod_freq + self._df) * 2 * np.pi * t) + dc = np.sin(2*np.pi*self._df*t + phase_sweep) + + self._phase_stimulus = am + dc + header = {" ": "Phase sweep stimulating ampullary and tuberous pathways", + "sd": 1.0, + "deltat": "%.5f s" % self._dt, + "eodf": self._eod_freq, + "df": self._df, + "T": "%.3f s" % (self._phase_sweep_duration)} + self.save_stim(t, self._phase_stimulus, header, "phase_sweep") + + def create_zap_stim(self): + t = np.arange(0, self._zap_duration, self._dt) + m = self._maxfreq/self._zap_duration + + dc = np.sin(2*np.pi*m*t*t) + am = np.sin(2*np.pi*(m*t + self._eod_freq)*t) + self._zap_stimulus = np.hstack((dc, am, dc+am)) + header = {" ": "Zap stimulus for ampullary and tuberous pathways", + "sd": 1.0, + "deltat": "%.5f s" % self._dt, + "eodf": self._eod_freq, + "maxf": self._maxfreq, + "T": "%.3f s" % (3*self._zap_duration)} + self.save_stim(np.arange(len(self._zap_stimulus))*self._dt, self._zap_stimulus, header, "zap") + + def save_stim(self, time, stimulus, header, suffix): + assert(isinstance(header, dict)) + + with open('_'.join((self._outfile, suffix)) + '.dat', "w") as f: + for h in header.items(): + if len(h[0].strip()) == 0: + f.write("# %s\n" % (h[1])) + else: + f.write("# %s = %s\n" % (h[0], h[1])) + f.write("\n") + f.write("#Key\n") + f.write("# t \t x \n") + f.write("# s \t 1 \n") + + for t, s in zip(time, stimulus): + f.write("%.5f\t %.7f\n" % (t, s)) + f.write("\n") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=args.description) + parser.add_argument('-f', '--frequency', metavar="f", type=float, default='100', + help='The fish\'s EOD frequency') + parser.add_argument('-a', '--amplitude', metavar='a', type=float, + help='The fish\'s EOD amplitude in mV/cm') + parser.add_argument('-bf', '--beatfrequency', default=20, metavar='b', type=float, + help=args.beat_help) + parser.add_argument('-dc', '--dcfrequency', default=20, metavar='dcfreq', type=float, + help=args.dc_help) + parser.add_argument('-dt', '--stepsize', type=float, default=1./20000, + help=args.dt_help) + parser.add_argument('-mf', '--maxfreq', type=float, default=100., + help=args.maxfreq_help) + parser.add_argument('outfile prefix', help="name of the output file may include the path") + + args = parser.parse_args() + + stim = MultichannelStimulus(args) + diff --git a/torus/relacs.cfg b/torus/relacs.cfg new file mode 100644 index 0000000..02d9e10 --- /dev/null +++ b/torus/relacs.cfg @@ -0,0 +1,228 @@ +*Settings + Plugins: + pluginpathes : [ base*, base*, misc*, ephys*, efield*, efish*, comedi*, attcs3310* ] + pluginhelppathes: ~ + controlplugin : [ Session, AmplifierControl, SpectrumAnalyzer ] + modelplugin : PUnitModel + Pathes: + pathformat : %04Y-%02m-%02d-%a2a-invivo-1 + defaultpath: dry/ + repropath : [ stimuli/repros/, reprodata, stimuli/repros/ ] + infofile : info.dat + Save: + saverelacsfiles : true + saveodmlfiles : false + savenixfiles : true + savenixcompressed: true + saverelacscore : true + saverelacsplugins: true + saverelacslog : true + saveattenuators : true + Date/time formats: + elapsedformat : "%02H:%02M" + sessiontimeformat: %Hh%02Mmin%02Ssec + reprotimeformat : %Mmin%02Ssec + Plotting: + printcommand: ~ + Data acquisition: + processinterval: 50ms + aitimeout : 10seconds + +*Metadata + -Setup-: + Identifier (Name): invivo1 + Maintainer : Jan Grewe + Creator : Jan Grewe and Jan Benda + Location (Room) : "5A17" + Lab : Neuroethology Lab + Institute : Institute for Neurobiology + University : University Tuebingen + Address : Auf der Morgenstelle 28 + +*RELACS + input data: + inputsamplerate : 40kHz + inputtracecapacity : 600s + inputunipolar : false + inputtraceid : [ V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ] + inputtracescale : [ 100, 1, 20, 5 ] + inputtraceunit : [ mV, mV, mV, mV ] + inputtracedevice : [ ai-1, ai-1, ai-1, ai-1 ] + inputtracechannel : [ 6, 0, 2, 4 ] + inputtracereference: [ ground, ground, ground, ground ] + inputtracemaxvalue : [ 100, 5, 3, 1 ] + inputtracecenter : [ true, true, true, true ] + output data: + outputtraceid : [ GlobalEField, GlobalEFieldAM, V, I ] + outputtracedevice : [ ao-1, ao-1, ao-1, ao-1 ] + outputtracechannel : [ 1, 0, 2, 3 ] + outputtracescale : [ 1, 1, 1, 1 ] + outputtraceunit : [ V, V, V, V ] + outputtracemaxrate : [ 100kHz, 100kHz, 100kHz, 100kHz ] + outputtracemodality: [ voltage, voltage, voltage, current ] + +*Macros + file : [ macros.cfg, macrotorus.cfg, macrosdc.cfg, macrosam.cfg, macro_ELL_MS.cfg, macros_fakefish.cfg, macro_ELL_AM.cfg, /home/efish/data/ephys/pyramidals/macros.cfg ] + mainfile : macros.cfg + fallbackonreload: true + +*FilterDetectors + Filter1: + name : Spikes-1 + filter : DynamicSUSpikeDetector + inputtrace : V-1 + save : true + savesize : true + savewidth : true + savemeanrate : true + savemeansize : true + savemeanwidth : true + savemeanquality: true + plot : true + buffersize : 300000 + storesize : true + storewidth : false + Filter2: + name : EOD + filter : EODDetector + inputtrace : EOD + save : false + savesize : false + savewidth : false + savemeanrate : true + savemeansize : true + savemeanwidth : false + savemeanquality: false + plot : true + buffersize : 300000 + storesize : true + storewidth : false + Filter3: + name : Chirps + filter : ChirpDetector + inputtrace : EOD + save : true + savesize : true + savewidth : true + savemeanrate : true + savemeansize : false + savemeanwidth : false + savemeanquality: false + plot : true + buffersize : 300000 + storesize : true + storewidth : true + Filter4: + name : LocalEOD-1 + filter : EODDetector + inputtrace : LocalEOD-1 + save : false + savesize : false + savewidth : false + savemeanrate : true + savemeansize : true + savemeanwidth : false + savemeanquality: false + plot : true + buffersize : 300000 + storesize : true + storewidth : false + Filter5: + name : LocalBeat-1 + filter : BeatDetector + inputtrace : LocalEOD-1 + save : true + savesize : true + savewidth : false + savemeanrate : true + savemeansize : true + savemeanwidth : false + savemeanquality: false + plot : true + buffersize : 300000 + storesize : true + storewidth : false + othertrace : Chirps + Filter6: + name : GlobalEFieldStimulus + filter : EODDetector + inputtrace : GlobalEFieldStimulus + save : false + savesize : false + savewidth : false + savemeanrate : true + savemeansize : true + savemeanwidth : false + savemeanquality: false + plot : true + buffersize : 300000 + storesize : true + storewidth : false + +*AudioMonitor + device : [ "-1 default", "0 HDA Intel PCH: CX20642 Analog (hw:0,0) (2 channels)", "2 HDA Intel PCH: HDMI 0 (hw:0,3) (8 channels)", "3 HDA Intel PCH: HDMI 1 (hw:0,7) (8 channels)", "4 sysdefault (128 channels)", "5 front (2 channels)", "6 surround40 (2 channels)", "7 surround51 (2 channels)", "8 surround71 (2 channels)", "9 hdmi (8 channels)", "10 pulse (32 channels)", "11 dmix (2 channels)", "12 default (32 channels) - default" ] + enable : true + mute : false + gain : 1 + audiorate: [ "48", "8", "16", "22.05", "44.1", "48", "96" ]kHz + +*Devices + Device1: + plugin : AmplMode + device : dio-1 + ident : ampl-1 + buzzerpin : 14 + resistancepin: 15 + bridgepin : 10 + cclamppin : 9 + vclamppin : 8 + dclamppin : 13 + syncpin : 7 + buzzerpulse : 500 + +*Analog Input Devices + Device1: + plugin: ComediAnalogInput + device: /dev/comedi0 + ident : ai-1 + +*Analog Output Devices + Device1: + plugin: ComediAnalogOutput + device: /dev/comedi0 + ident : ao-1 + +*Digital I/O Devices + Device1: + plugin: ComediDigitalIO + device: /dev/comedi0 + ident : dio-1 + +*Attenuator Devices + Device1: + plugin: [ CS3310DIO, AttSim ] + device: dio-1 + ident : attdev-1 + +*Attenuator Interfaces + Device1: + plugin : LinearAttenuate + device : attdev-1 + line : 0 + aodevice : ao-1 + aochannel : 0 + ident : Attenuator-0 + intensityname : amplitude + intensityunit : mV/cm + intensityformat: %6.3f + Device2: + plugin : LinearAttenuate + device : attdev-1 + line : 1 + aodevice : ao-1 + aochannel : 1 + ident : Attenuator-1 + intensityname : amplitude + intensityunit : mV/cm + intensityformat: %6.3f + diff --git a/torus/relacsplugins.cfg b/torus/relacsplugins.cfg new file mode 100644 index 0000000..c353958 --- /dev/null +++ b/torus/relacsplugins.cfg @@ -0,0 +1,771 @@ +*Metadata + Recording: + Recording quality: [ Good, ~, good, poor, Poor, Fair, Good ] + Comment : ~ + Experimenter : [ Jan Grewe, Dennis Huben, Janez Presern, Fabian Sinz, Juan Sehuanes, Carolin Sachgau, Jie Zhang, Jan Grewe, Jan Benda ] + WaterTemperature : 24.5°C + WaterConductivity: 330uS/cm + Cell: + CellType (Cell type) : [ unkown, Pyramidal, E-cell, E-cell deep, unknow, E-Cell, unkown, E-cell superficial, I-Cell, P-unit, Ampullary, T-unit ] + Structure (Recording location): [ Brain, Nerve, Brain ] + BrainRegion : [ TSd, TSd, Torus, n.A., ELL ] + BrainSubRegion : [ ~, ~, LS, CLS, CMS, MS ] + Depth : 535.7um + Lateral position : -1.4mm + Transverse section : 7 + Subject: + Species : [ Apteronotus leptorhynchus, Apteronotus albifrons, Apteronotus leptorhynchus ] + Gender (Sex): [ unknown, unknown, Male, Female ] + Size : 17cm + Weight : 13.6g + Identifier : "2018lepto24" + -Preparation-: + Type : [ in vivo, in vivo, slice ] + Anaesthesia : true + Anaesthetic (Drug) : MS 222 + AnaestheticDose (Concentration): 100mg/l + LocalAnaesthesia : true + LocalAnaesthetic (Drug) : Lidocaine + Immobilization : true + ImmobilizationDrug (Drug) : Tubocurarin 5mg/L + ImmobilizationDose : 50ul + +*Control: Session + ephys: true + +*Control: AmplifierControl + initmode : [ Bridge, Current-clamp, Dynamic-clamp, Voltage-clamp, Manual selection ] + resistancecurrent: 1nA + adjust : false + maxresistance : 100MOhm + buzzpulse : 500ms + showswitchmessage: true + showbridge : true + showcc : false + showdc : false + showvc : false + showmanual : false + syncpulse : 10us + syncmode : 0samples + vcgain : 100 + vctau : 1ms + +*Control: SpectrumAnalyzer + intrace : [ LocalEOD-1, V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ] + origin : [ before end of data, before signal, after signal ] + offset : 0ms + duration : 1000ms + resolution: 10Hz + overlap : true + window : [ Hanning, Bartlett, Blackman, Blackman-Harris, Hamming, Hanning, Parzen, Square, Welch ] + fmax : 500Hz + decibel : true + peak : true + pmin : -50dB + +*Model: PUnitModel + General: + EOD: + eodtype : [ Sine, None, Sine, Apteronotus, Eigenmannia ] + eodfreq : 800Hz + eodfreqsd : 10Hz + eodfreqtau : 10000s + eodlocalamplitude : 1mV/cm + eodglobalamplitude: 1mV/cm + localstimulusgain : 1.00 + globalstimulusgain: 0.00 + stimulusgain : 1.00 + Spikes: + voltagescale: 0.5 + General: + Spike generator: + spikemodel: [ Wang-Buzsaki, Stimulus, Passive membrane, Morris-Lecar, Hodgkin-Huxley, Connor, Wang-Buzsaki ] + noised : 0 + deltat : 0.05ms + integrator: [ Euler, Midpoint, Runge-Kutta 4 ] + Voltage clamp: + vcgain: 10 + vctau : 0.1ms + Currents: + Voltage-gated current 1 - activation only: + gmc : 0 + emc : -90mV + mvmc : -40mV + mwmc : 10mV + taumc: 10ms + Voltage-gated current 2 - activation and inactivation: + gmhc : 0 + emhc : -90mV + mvmhc : -40mV + mwmhc : 10mV + taummhc: 10ms + pmmhc : 1 + hvmhc : -40mV + hwmhc : 10mV + tauhmhc: 10ms + pmhhc : 1 + +*Model: Stimulus + Input: + gain : 1 + offset: 0muA/cm^2 + +*Model: Passive membrane + Parameter: + R: 50MOhm + C: 25pF + Input: + gain : 1 + offset: 0muA/cm^2 + +*Model: Morris-Lecar + General: + params: [ Custom, Type I, Type II ] + Calcium current: + gca : 4nS + eca : 120mV + mvca: -1.2mV + mkca: 18mV + Potassium current: + gk : 8nS + ek : -84mV + mvk : 12mV + mkk : 17.4mV + mphik: 0.067kHz + Leak current: + gl: 2nS + el: -60mV + c : 20pF + Input: + timescale: 10 + gain : 1 + offset : 40muA/cm^2 + +*Model: Hodgkin-Huxley + Sodium current: + gna: 120mS/cm^2 + ena: 50mV + Potassium current: + gk: 36mS/cm^2 + ek: -77mV + Leak current: + gl : 0.3mS/cm^2 + el : -54.4mV + c : 1muF/cm^2 + phi: 1 + Input: + gain : 1 + offset: 0muA/cm^2 + +*Model: Connor + Sodium current: + gna: 120mS/cm^2 + ena: 50mV + Potassium current: + gk: 20mS/cm^2 + ek: -77mV + A current: + gka: 47mS/cm^2 + eka: -80mV + Leak current: + gl : 0.3mS/cm^2 + el : -22mV + c : 1muF/cm^2 + phi: 1 + Input: + gain : 1 + offset: 0muA/cm^2 + +*Model: Wang-Buzsaki + Sodium current: + gna: 35mS/cm^2 + ena: 55mV + Potassium current: + gk: 9mS/cm^2 + ek: -90mV + Leak current: + gl : 0.1mS/cm^2 + el : -65mV + c : 1muF/cm^2 + phi: 5 + Input: + gain : 1 + offset: 0muA/cm^2 + +*Event Detector: Spikes-1 + Detector: + minthresh: 8.4mV + decay : 1sec + ratio : 12% + testwidth: false + maxwidth : 2.0ms + Indicators: + resolution : 0.10mV + trendthresh: 10% + trendtime : 2.0sec + +*Event Detector: EOD + threshold : 0.26mV + interpolation: [ linear interpolation, closest datapoint, linear interpolation, linear fit, quadratic fit ] + +*Event Detector: Chirps + minthresh: 10Hz + +*Event Detector: LocalEOD-1 + threshold : 0.1mV + interpolation: [ linear interpolation, closest datapoint, linear interpolation, linear fit, quadratic fit ] + +*Event Detector: LocalBeat-1 + minthresh: 0.022mV + +*Event Detector: GlobalEFieldStimulus + threshold : 0.044256mV + interpolation: [ linear interpolation, closest datapoint, linear interpolation, linear fit, quadratic fit ] + +*RePro: Pause + duration : 1sec + savedata : false + plotwidth: 0sec + +*RePro: Record + duration : 1sec + plotwidth: 0sec + dioout : false + diodevice: dio-1 + dioline : 0 + +*RePro: SaveTraces + General: + duration : 1sec + savedata : false + split : false + dioout : false + diodevice: dio-1 + dioline : 0 + Analog input traces: + trace-V-1 : true + trace-EOD : true + trace-LocalEOD-1 : true + trace-GlobalEFieldStimulus: true + Events: + events-Spikes-1 : true + events-EOD : true + events-Chirps : true + events-LocalEOD-1 : true + events-LocalBeat-1-1 : true + events-LocalBeat-1-2 : true + events-GlobalEFieldStimulus: true + +*RePro: SetAttenuatorGain + outrace : V-1 + gain : 1 + interactive: true + +*RePro: SetDigitalOutput + device : dio-1 + line : 0 + value : 0 + interactive: false + +*RePro: SetInputGain + intrace : [ V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ] + gainindex : 0 + interactive: true + +*RePro: SetOutput + outtrace : [ GlobalEField, GlobalEFieldAM, V, I ] + value : 0V + intensity : 1 + interactive: true + +*RePro: Spectrogram + intrace : [ V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ] + width : 100ms + step : 0ms + tmax : 10s + duration: 0s + size : [ "1024", "64", "128", "256", "512", "1024", "2048", "4096", "8192", "16384", "32768", "65536", "131072", "262144", "524288", "1048576" ] + overlap : true + window : [ Hanning, Bartlett, Blackman, Blackman-Harris, Hamming, Hanning, Parzen, Square, Welch ] + powermax: true + fmax : 2000Hz + pmax : 0dB + pmin : -50dB + +*RePro: TransferFunction + Stimulus: + outtrace : [ GlobalEField, GlobalEFieldAM, V, I ] + offsetbase: [ custom, current ]value + offset : 0V + amplitude : 1V + clip : 4 + intensity : 1 + fmin : 0Hz + fmax : 1000Hz + duration : 1s + pause : 1s + repeats : 100 + Analysis: + intrace : [ V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ] + size : [ "1024", "64", "128", "256", "512", "1024", "2048", "4096", "8192", "16384", "32768", "65536", "131072", "262144", "524288", "1048576" ] + overlap : true + window : [ Hanning, Bartlett, Blackman, Blackman-Harris, Hamming, Hanning, Parzen, Square, Welch ] + plotstdevs : true + plotcoherence: true + plotdecibel : false + +*RePro: Wait + absdate: false + date : ~ + days : 0days + time : "00:00:00.000" + +*RePro: BridgeTest + amplitude : 1V + duration : 10ms + pause : 100ms + average : 10 + skipspikes : true + dynamicrange: false + rate : 0.01 + plottrace : true + +*RePro: CalibrateSyncPulse + imin : -1 + imax : 1 + istep : 0.001 + skipwin : 1000ms + duration: 1000ms + +*RePro: CapacityCompensation + amplitude : 1V + duration : 200ms + frequency : 100Hz + showcycles : 10 + pause : 100ms + average : 10 + skipspikes : true + dynamicrange: false + rate : 0.01 + +*RePro: Iontophoresis + durationpos : 1s + amplitudepos : 1V + pausepos : 1s + durationneg : 1s + amplitudeneg : 1V + pauseneg : 1s + fortunes : true + fortuneperiod: 10s + +*RePro: SetLeak + interactive : true + preset : [ previous, zero, custom ]values + g : 0nS + E : 0mV + reversaltorest: true + involtage : [ V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ] + duration : 100ms + +*RePro: SetVGate + interactive : true + preset : [ previous, zero, custom ]values + g : 0nS + E : 0mV + vmid : 0mV + width : 0mV + tau : 10ms + reversaltorest: true + involtage : [ V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ] + duration : 100ms + +*RePro: Beats + Stimulation: + name : ~ + duration : 10seconds + pause : 20seconds + ramp : 0.5seconds + deltafrange : "10"Hz + deltafshuffle: [ Up, Down, AlternateInUp, AlternateInDown, AlternateOutUp, AlternateOutDown, Random, PseudoRandom ] + fixeddf : false + amplitude : 1mV/cm + amtype : [ none, sine, rectangular ] + amfreq : "1"Hz + amamplitude : "100"% + repeats : 10 + fakefish : 0Hz + Chirps: + generatechirps : false + chirpsize : 100Hz + chirpwidth : 100ms + chirpampl : 0% + chirpkurtosis : 1 + chirpfrequencies: ~Hz + chirptimesfile : ~ + chirptimeshuffle: [ Up, Down, AlternateInUp, AlternateInDown, AlternateOutUp, AlternateOutDown, Random, PseudoRandom ] + Analysis: + before : 1seconds + after : 1seconds + averagetime : 1seconds + usepsd : true + mineodfreq : 100Hz + maxeodfreq : 2000Hz + eodfreqprec : 1Hz + neod : 2 + showstimulus: false + split : false + savetraces : false + +*RePro: CalibEField + General: + reset : false + resetval : 0.1 + am : false + beatfreq : 20Hz + frequency: 600Hz + duration : 600ms + pause : 10ms + Range: + amplsel : [ contrast, amplitude ] + targetcontrast : 20% + mincontrast : 10% + maxcontrast : 40% + targetamplitude: 1mV/cm + minamplitude : 0.5mV/cm + maxamplitude : 2mV/cm + numintensities : 10 + +*RePro: CalibrateRobot + robot: robot-1 + +*RePro: DualBeat + Stimulus: + rewarded : [ A, B ] + eodf : 0.0Hz + duration : 10seconds + deltafA : 25.0Hz + harmonicA : false + amplitudeA: 1.000V + deltafB : -50.0Hz + harmonicB : false + amplitudeB: 1.000V + Experiment: + noFish : false + randomizeAmpl : true + amplitudeRange : 20% + randomSminus : false + sminusRange : 200Hz + training : true + randomElectrode : true + rewardedElectrode: [ "1", "2" ] + trainingTrials : 10 + testTrials : 5 + testBeat : -25.0Hz + testAmplitude : 1.000V + stimOff : true + rewardInTest : true + harmonic : true + Setup: + scaling1: 1.000 + scaling2: 1.000 + EOD estimation: + intrace : [ V-1, EOD, LocalEOD-1, GlobalEFieldStimulus ] + usepsd : true + mineodfreq : 100Hz + maxeodfreq : 2000Hz + eodfreqprec: 1Hz + averagetime: 2s + +*RePro: EFieldGeometry + Enviroment data: + temperature : 26°C + conductivity: 330µS + water_level : 20cm + Measurement data: + robot : robot-1 + type : ~ + distance : 0mm + head_length : 20mm + tail_length : 20mm + width_posY : 50mm + width_negY : 50mm + height : 50mm + depth : 50mm + step_length_x: 5mm + step_length_y: 5mm + step_length_z: 5mm + +*RePro: JAR + Stimulation: + duration : 10seconds + pause : 10seconds + ramp : 0.5seconds + deltafstep : 2Hz + deltafmax : 12Hz + deltafmin : -12Hz + deltafrange : ~ + deltafshuffle: [ Up, Down, AlternateInUp, AlternateInDown, AlternateOutUp, AlternateOutDown, Random, PseudoRandom ] + repeats : 200 + Amplitudes: + amplsel : [ contrast, absolute ] + contrastmax : 20% + contrastmin : 10% + contraststep: 20% + amplmin : 1mV/cm + amplmax : 2mV/cm + amplstep : 1mV/cm + S&timulus: + genstim : true + sinewave: true + file : ~ + sigstdev: 1 + warpfile: false + fakefish: 0Hz + A&nalysis: + before : 1seconds + after : 8seconds + savetraces : true + jaraverage : 500ms + chirpaverage: 20ms + eodsavetime : 1000ms + +*RePro: LinearField + duration: 1s + +*RePro: ManualJAR + deltaf : 0.0Hz + lineardeltaf : false + deltaf2 : 0.0Hz + amplitude : 1.0mV + duration : 10seconds + ramp : 0.5seconds + fakefish : 0Hz + showlineardeltaf: false + before : 1seconds + after : 1seconds + averagetime : 1seconds + split : false + savetraces : false + +*RePro: BaselineActivity + Timing: + duration: 300ms + repeats : 0 + Analysis: + isimax : 20ms + isistep : 0.2ms + ratedt : 0.05ms + ratetmax: 2ms + Files: + eodduration : 2000ms + saveeodtrace: false + saveeodtimes: false + Control: + auto : [ never, once, always ] + adjust: false + +*RePro: Chirps + Chirp parameter: + nchirps : 10 + beatpos : 10 + beatstart : 0.25 + minspace : 200ms + firstspace : 200ms + chirpsize : 60Hz + chirpwidth : 14ms + chirpampl : 2% + chirpsel : [ generated, from file ] + chirpkurtosis: 1 + file : [ /home/efish/Desktop/doublePeakChirp.dat, ~, /home/efish/Desktop/doublePeakChirp.dat ] + Beat parameter: + deltaf : 10Hz + contrast: 20% + am : true + sinewave: true + playback: false + pause : 1000ms + repeats : 16 + Analysis: + sigma : 2ms + adjust: false + +*RePro: FICurve + Test-Intensities: + duration : 400ms + maxintfac : 130% + minintfac : 70% + nints : 10 + repeats : 1 + blockrepeats : 10 + singlerepeats: 1 + intshuffle : [ AlternateOutUp, Up, Down, AlternateInUp, AlternateInDown, AlternateOutUp, AlternateOutDown, Random, PseudoRandom ] + intincrement : -2 + Pre-Intensities: + preduration : 0ms + maxpreintfac : 140% + minpreintfac : 60% + npreints : 3 + preintshuffle: [ AlternateInDown, Up, Down, AlternateInUp, AlternateInDown, AlternateOutUp, AlternateOutDown, Random, PseudoRandom ] + Control: + am : true + pause : 1000ms + delay : 200ms + onsettime : 50ms + rangeintincrement: 4 + minrate : 40Hz + minratefrac : 15% + adjust : false + +*RePro: FileStimulus + General: + name: ~ + Stimulus: + file : [ /home/efish/stimuli/whitenoise/dennis/InputArr_400hz_30s.dat, /home/efish/stimuli/whitenoise/dennis/InputArr_400hz_30s.dat, /home/efish/stimuli/whitenoise/dennis/InputArr_350to400hz_30s.dat, /home/efish/stimuli/whitenoise/gwn300Hz50s0.3.dat, ~, /home/efish/stimuli/whitenoise/gwn50Hz50s0.3.dat, /home/efish/stimuli/whitenoise/dennis/InputArr_250hz_30s.dat, /home/efish/stimuli/whitenoise/dennis/InputArr_50to100hz_30s.dat ] + sigstdev : 0.25 + duration : 20000ms + pause : 1000ms + amplsel : [ contrast, absolute ] + contrast : 20% + amplitude: 1mV/cm + am : true + repeats : 5 + Additional noise: + noisetype : [ none, Gaussian-White, Ornstein-Uhlenbeck ] + uppercutoff : 600Hz + lowercutoff : 0Hz + noisetau : 10ms + noisecontrast: 0% + noiseampl : 80mV/cm + Analysis: + binwidth: 5ms + before : 0ms + after : 0ms + plotpsd : true + psdsize : [ "256", "64", "128", "256", "512", "1024", "2048", "4096", "8192", "16384", "32768", "65536", "131072", "262144", "524288", "1048576" ] + adjust : false + +*RePro: MovingObjects + Movement: + startpos : [ 0, 0, 0 ] + traveldist : 0mm + travelspeed : 40mm/s + movementaxis: [ x, y, z ] + repeats : 1 + pause : 1.5s + object : [ pvc comb 4cm, pvc comb 1cm, perspex bar, metal sphere ] + Parameter space: + distmin : 0mm + distmax : 0mm + diststep : 1mm + speedmin : 0mm/s + speedmax : 0mm/s + speedstep: 0mm/s + Robot setup: + xmapping: [ y, z, x ] + xinvert : true + ymapping: [ z, x, y ] + yinvert : false + zmapping: [ x, y, z ] + zinvert : false + safepos : [ 0, 0, 0 ] + outpos : [ 0, 0, 0 ] + +*RePro: ReceptiveField + 2D search: + name : ~ + xmin : 0mm + xmax : 0mm + xspeed : 10mm/s + ymin : 0mm + ymax : 0mm + yspeed : 10mm/s + zpos : 5mm + followmidline: true + npasses : 1 + pause : 1000ms + Stimulation: + deltaf : 50Hz + amplitude: 1mV + Analysis: + nfft : 1024 + nshift : 128 + kernelwidth: 0.001ms + Robot setup: + robotdev : robot-2 + xmapping : [ y, z, x ] + xinvert : true + ymapping : [ z, x, y ] + yinvert : false + zmapping : [ x, y, z ] + zinvert : false + safex : 350mm + safey : 0mm + safez : 0mm + taxispeed: 40mm/s + +*RePro: RobotToFishPosition + Position: + destination : 0mm + followmidline: true + Robot setup: + xmapping: [ y, z, x ] + xinvert : true + ymapping: [ z, x, y ] + yinvert : false + zmapping: [ x, y, z ] + zinvert : false + +*RePro: SAM + General: + name: ~ + Stimulus: + duration : 400ms + pause : 100ms + freqsel : [ relative to EOD, absolute ] + deltaf : 20Hz + contrast : 20% + repeats : 0 + am : true + sinewave : true + ampl : "0.0" + phase : "0.0"pi + contrastsel: [ fundamental, peak amplitude ] + Analysis: + skip : 0.5Periods + ratebins: 10 + before : 0ms + after : 0ms + adjust : false + +*Attenuator-0 + plugin : LinearAttenuate + ident : Attenuator-0 + device : attdev-1 + line : 0 + aodevice : ao-1 + aochannel : 0 + intensityname : amplitude + intensityunit : mV/cm + intensityformat: %6.3f + frequencyname : ~ + frequencyunit : Hz + frequencyformat: %7.0f + gain : 0.91411 + offset : 0 + +*Attenuator-1 + plugin : LinearAttenuate + ident : Attenuator-1 + device : attdev-1 + line : 1 + aodevice : ao-1 + aochannel : 1 + intensityname : amplitude + intensityunit : mV/cm + intensityformat: %6.3f + frequencyname : ~ + frequencyunit : Hz + frequencyformat: %7.0f + gain : 0.059032 + offset : 0 +