'Spike2 DOS script converter V1.0 var a,b,i,k,l,n; 'A-Z variables used var neqq%:=0; 'New event channel var pqq%:=0; 'Print file handle var dumqq; 'Used by Minmax var view%; 'The current view number var vqq%[7][2]; 'To emulate views var test1:=0; var test2:=82; var feti, setia, setib, seti[5001], counter, trig, trigp1, start, curs1, curs2; var trigmem%:=1; var avgint, intl, intr, offs, links, rechts, divavg, evchan, x; var psthoffs, events, sum, dump, evint, viewtemp%; var legal$, text$; var eventmem%:=2; var eventCh1%, eventCh2%, eventCh3%, eventCh4%, eventCh5%, eventCh6%,eventCh2b%, eventCh3b%, eventCh4b%, eventCh5b%, eventCh6b%, psthchan; var punkt:=1; var spring:=0; var vor, nach; events := 5; 'Kanal, in den FETi/SETi-events geschrieben werden sollen evchan := 2; 'Kanal, der F2-Ableitung enthaelt l := 300; 'Anzahl der Klassen im PSTH k := 0.001; 'Klassenbreite in s psthoffs := 0; text$ := "input filename"; legal$ := "a-zA-Z0-9.-"; offs := 0.1; '-((80/16)*2) links := 0.01; rechts := 40; divavg := 4; 'bestimmt, der wievielte Teil des Intervalls zwischen zwei 'Triggern als average-Intervall genommen wird evint := 4; ToolbarClear(); ToolbarSet(2, "Stop", stop%); ToolbarSet(4, "psth", psth%); 'ToolbarSet(5, "Loeschen Memchan", loesch%); ToolbarSet(6, "CF", sortierenCF%); ToolbarSet(7, "10 ms PF-", sortieren10msPFm%); ToolbarSet(8, "30 ms PF-", sortieren30msPFm%); ToolbarSet(9, "50 ms PF-", sortieren50msPFm%); ToolbarSet(10, "80 ms PF-", sortieren80msPFm%); ToolbarSet(11, "100 ms PF-", sortieren100msPFm%); ToolbarSet(12, "CF/PF", CFPF%); ToolbarSet(13, "10 ms PF+", sortieren10msPFp%); ToolbarSet(14, "30 ms PF+", sortieren30msPFp%); ToolbarSet(15, "50 ms PF+", sortieren50msPFp%); ToolbarSet(16, "80 ms PF+", sortieren80msPFp%); ToolbarSet(17, "100 ms PF+", sortieren100msPFp%); repeat Toolbar("",1023); until 0; Halt; func stop%() halt; end; func trigger%() '--------------------------------------- if trigmem% > 0 then ChanDelete(trigmem%); endif; 'loescht den eventch 1 usw... CursorDelete(-1); 'loescht alle vertikalen Cursor CursorNew(XLow()+1); 'macht neuen Cursor an Stelle links im Fenster + 1 sec CursorNew(Xhigh()-1); Interact("Place the cursors around the region to be analysed...", 1023); 'die 1023 erlaubt dem User alles am Fenster zu verstellen CursorRenumber(); 'renumbered cursor -> linker cursor wird cursor 1 HCursorDelete(1);HCursorNew(1); 'neuer horizontaler cUrsor Interact("Hcursor positionieren", 0); trigmem%:=MemChan(2); MemImport(trigmem%, 1, Cursor(1), Cursor(2), 2, evint, HCursor(1)); 'schreib in Memchan ChanShow(trigmem%); 'FrontView(View());Draw(0, 10); test1:=Cursor(1); '2 variablen , die sich die cursorpositionen merken test2:=Cursor(2); return; end; func setiev%() '------------------------------------------------ if eventmem% > 0 then ChanDelete(eventmem%); endif; HCursorDelete(1);HCursorNew(evchan); 'neue Hhorizontale Cursor Interact("Hcursors positionieren", 0); ToolbarText("Erstelle Eventchannel"); eventmem%:=MemChan(3); MemImport(eventmem%, evchan, test1, test2, 3, 0.001, HCursor(1)); ChanShow(eventmem%); 'FrontView(View());Draw(0, 10); viewtemp% := View(0); 'Variable, die sich den aktuellen View (Daten) merkt return; end; func psth%() '------------------------------------------------- 'PrintLog(test1," ", test2); Colour(17,10); 'Farbe des PSTHs var nnumber; ' n Zahl ToolbarText("erstelle PSTH"); SetPSTH(eventmem%, l, k, psthoffs, psthchan); 'erstellt den PSTH View Process(test1, test2); 'Rechnet das PSTH aus WindowVisible(1); 'zeigt das PSTH Optimise(0); 'Optimiert die Anzeige nnumber:=Sweeps(); 'Weist variable die N Zahl zu PrintLog("n = ", nnumber); return; end; func loesch%() View(viewtemp%); 'kehrt zu Daten-View zurueck (sonst loescht er die Kanaele niicht) 'Delete temporary channels... 'ChanDelete(eventmem%); 'ChanDelete(trigmem%); end; func sortierenCF%() eventCh1% := MemChan(2); 'legt neuen Memorychannel an. 2 steht fuer Eventchannel, 1 waere data 'eventCh3% := MemChan(2); psthchan:=eventCh1%; while punkt > 0 do PrintLog("Punkt = ", punkt," spring = ", spring); punkt:=nexttime(1,spring); spring:=punkt; vor:=punkt-0.01; nach:=punkt+0.01; MemImport(eventCh1%, trigmem%, vor, nach); 'holt die Daten in den Memorykanal (eventch1) aus inputch% von sTime bis eTime, '2 heisst, wenn daten die schwelle ueberschreiten, 0 heisst dass kein Zeitintervall da sein soll und die letzte Variable gibt die Schwelle (hcursor) 'MemImport(eventCh3%, inputCh%, sTime, eTime, 2, 0, setCutOff1); ChanShow(eventCh1%); 'zeigt den Kanal for x := 1 to 10 do PrintLog("x = ", x," spring = ", spring); spring:=nexttime(1,spring); if spring < 0 then punkt:=-1 endif; next; wend; end; func sortieren10msPFm%() eventCh2% := MemChan(2); 'legt neuen Memorychannel an. 2 steht fuer Eventchannel, 1 waere data 'eventCh3% := MemChan(2); psthchan:=eventCh2%; l := 300; 'Anzahl der Klassen im PSTH k := 0.001; 'Breite der Bins punkt:=1; spring:=0; spring:=nexttime(1,spring); while punkt < 37 do PrintLog("Punkt = ", punkt," spring = ", spring); punkt:=nexttime(1,spring); spring:=punkt; vor:=punkt-0.01; nach:=punkt+0.01; MemImport(eventCh2%, trigmem%, vor, nach); 'holt die Daten in den Memorykanal (eventch1) aus inputch% von sTime bis eTime, '2 heisst, wenn daten die schwelle ueberschreiten, 0 heisst dass kein Zeitintervall da sein soll und die letzte Variable gibt die Schwelle (hcursor) 'MemImport(eventCh3%, inputCh%, sTime, eTime, 2, 0, setCutOff1); ChanShow(eventCh2%); 'zeigt den Kanal for x := 1 to 10 do PrintLog("x = ", x," spring = ", spring); spring:=nexttime(1,spring); if spring < 0 then punkt:=-1 endif; next; wend; end; func sortieren10msPFp%() eventCh2b% := MemChan(2); 'legt neuen Memorychannel an. 2 steht fuer Eventchannel, 1 waere data 'eventCh3% := MemChan(2); psthchan:=eventCh2b%; l := 300; 'Anzahl der Klassen im PSTH k := 0.001; 'Breite der Bins punkt:=1; spring:=41; spring:=nexttime(1,spring); while punkt > 0 do PrintLog("Punkt = ", punkt," spring = ", spring); punkt:=nexttime(1,spring); spring:=punkt; vor:=punkt-0.01; nach:=punkt+0.01; MemImport(eventCh2b%, trigmem%, vor, nach); 'holt die Daten in den Memorykanal (eventch1) aus inputch% von sTime bis eTime, '2 heisst, wenn daten die schwelle ueberschreiten, 0 heisst dass kein Zeitintervall da sein soll und die letzte Variable gibt die Schwelle (hcursor) 'MemImport(eventCh3%, inputCh%, sTime, eTime, 2, 0, setCutOff1); ChanShow(eventCh2b%); 'zeigt den Kanal for x := 1 to 10 do PrintLog("x = ", x," spring = ", spring); spring:=nexttime(1,spring); if spring < 0 then punkt:=-1 endif; next; wend; end; func sortieren30msPFm%() eventCh3% := MemChan(2); 'legt neuen Memorychannel an. 2 steht fuer Eventchannel, 1 waere data 'eventCh3% := MemChan(2); psthchan:=eventCh3%; l := 300; 'Anzahl der Klassen im PSTH k := 0.001; 'Breite der Bins punkt:=1; spring:=0; spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); while punkt < 37 do PrintLog("Punkt = ", punkt," spring = ", spring); punkt:=nexttime(1,spring); spring:=punkt; vor:=punkt-0.01; nach:=punkt+0.01; MemImport(eventCh3%, trigmem%, vor, nach); 'holt die Daten in den Memorykanal (eventch1) aus inputch% von sTime bis eTime, '2 heisst, wenn daten die schwelle ueberschreiten, 0 heisst dass kein Zeitintervall da sein soll und die letzte Variable gibt die Schwelle (hcursor) 'MemImport(eventCh3%, inputCh%, sTime, eTime, 2, 0, setCutOff1); ChanShow(eventCh3%); 'zeigt den Kanal for x := 1 to 10 do PrintLog("x = ", x," spring = ", spring); spring:=nexttime(1,spring); if spring < 0 then punkt:=-1 endif; next; wend; end; func sortieren30msPFp%() eventCh3b% := MemChan(2); 'legt neuen Memorychannel an. 2 steht fuer Eventchannel, 1 waere data 'eventCh3% := MemChan(2); psthchan:=eventCh3b%; l := 300; 'Anzahl der Klassen im PSTH k := 0.001; 'Breite der Bins punkt:=1; spring:=41; spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); while punkt > 0 do PrintLog("Punkt = ", punkt," spring = ", spring); punkt:=nexttime(1,spring); spring:=punkt; vor:=punkt-0.01; nach:=punkt+0.01; MemImport(eventCh3b%, trigmem%, vor, nach); 'holt die Daten in den Memorykanal (eventch1) aus inputch% von sTime bis eTime, '2 heisst, wenn daten die schwelle ueberschreiten, 0 heisst dass kein Zeitintervall da sein soll und die letzte Variable gibt die Schwelle (hcursor) 'MemImport(eventCh3%, inputCh%, sTime, eTime, 2, 0, setCutOff1); ChanShow(eventCh3b%); 'zeigt den Kanal for x := 1 to 10 do PrintLog("x = ", x," spring = ", spring); spring:=nexttime(1,spring); if spring < 0 then punkt:=-1 endif; next; wend; end; func sortieren50msPFm%() eventCh4% := MemChan(2); 'legt neuen Memorychannel an. 2 steht fuer Eventchannel, 1 waere data 'eventCh3% := MemChan(2); psthchan:=eventCh4%; l := 300; 'Anzahl der Klassen im PSTH k := 0.001; 'Breite der Bins punkt:=1; spring:=0; spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); while punkt < 37 do PrintLog("Punkt = ", punkt," spring = ", spring); punkt:=nexttime(1,spring); spring:=punkt; vor:=punkt-0.01; nach:=punkt+0.01; MemImport(eventCh4%, trigmem%, vor, nach); 'holt die Daten in den Memorykanal (eventch1) aus inputch% von sTime bis eTime, '2 heisst, wenn daten die schwelle ueberschreiten, 0 heisst dass kein Zeitintervall da sein soll und die letzte Variable gibt die Schwelle (hcursor) 'MemImport(eventCh3%, inputCh%, sTime, eTime, 2, 0, setCutOff1); ChanShow(eventCh4%); 'zeigt den Kanal for x := 1 to 10 do PrintLog("x = ", x," spring = ", spring); spring:=nexttime(1,spring); if spring < 0 then punkt:=-1 endif; next; wend; end; func sortieren50msPFp%() eventCh4b% := MemChan(2); 'legt neuen Memorychannel an. 2 steht fuer Eventchannel, 1 waere data 'eventCh3% := MemChan(2); psthchan:=eventCh4b%; l := 300; 'Anzahl der Klassen im PSTH k := 0.001; 'Breite der Bins punkt:=1; spring:=41; spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); while punkt > 0 do PrintLog("Punkt = ", punkt," spring = ", spring); punkt:=nexttime(1,spring); spring:=punkt; vor:=punkt-0.01; nach:=punkt+0.01; MemImport(eventCh4b%, trigmem%, vor, nach); 'holt die Daten in den Memorykanal (eventch1) aus inputch% von sTime bis eTime, '2 heisst, wenn daten die schwelle ueberschreiten, 0 heisst dass kein Zeitintervall da sein soll und die letzte Variable gibt die Schwelle (hcursor) 'MemImport(eventCh3%, inputCh%, sTime, eTime, 2, 0, setCutOff1); ChanShow(eventCh4b%); 'zeigt den Kanal for x := 1 to 10 do PrintLog("x = ", x," spring = ", spring); spring:=nexttime(1,spring); if spring < 0 then punkt:=-1 endif; next; wend; end; func sortieren80msPFm%() eventCh5% := MemChan(2); 'legt neuen Memorychannel an. 2 steht fuer Eventchannel, 1 waere data 'eventCh3% := MemChan(2); psthchan:=eventCh5%; l := 300; 'Anzahl der Klassen im PSTH k := 0.001; 'Breite der Bins punkt:=1; spring:=0; spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); while punkt < 37 do PrintLog("Punkt = ", punkt," spring = ", spring); punkt:=nexttime(1,spring); spring:=punkt; vor:=punkt-0.01; nach:=punkt+0.01; MemImport(eventCh5%, trigmem%, vor, nach); 'holt die Daten in den Memorykanal (eventch1) aus inputch% von sTime bis eTime, '2 heisst, wenn daten die schwelle ueberschreiten, 0 heisst dass kein Zeitintervall da sein soll und die letzte Variable gibt die Schwelle (hcursor) 'MemImport(eventCh3%, inputCh%, sTime, eTime, 2, 0, setCutOff1); ChanShow(eventCh5%); 'zeigt den Kanal for x := 1 to 10 do PrintLog("x = ", x," spring = ", spring); spring:=nexttime(1,spring); if spring < 0 then punkt:=-1 endif; next; wend; end; func sortieren80msPFp%() eventCh5b% := MemChan(2); 'legt neuen Memorychannel an. 2 steht fuer Eventchannel, 1 waere data 'eventCh3% := MemChan(2); psthchan:=eventCh5b%; l := 300; 'Anzahl der Klassen im PSTH k := 0.001; 'Breite der Bins punkt:=1; spring:=41; spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); while punkt > 0 do PrintLog("Punkt = ", punkt," spring = ", spring); punkt:=nexttime(1,spring); spring:=punkt; vor:=punkt-0.01; nach:=punkt+0.01; MemImport(eventCh5b%, trigmem%, vor, nach); 'holt die Daten in den Memorykanal (eventch1) aus inputch% von sTime bis eTime, '2 heisst, wenn daten die schwelle ueberschreiten, 0 heisst dass kein Zeitintervall da sein soll und die letzte Variable gibt die Schwelle (hcursor) 'MemImport(eventCh3%, inputCh%, sTime, eTime, 2, 0, setCutOff1); ChanShow(eventCh5b%); 'zeigt den Kanal for x := 1 to 10 do PrintLog("x = ", x," spring = ", spring); spring:=nexttime(1,spring); if spring < 0 then punkt:=-1 endif; next; wend; end; func sortieren100msPFm%() eventCh6% := MemChan(2); 'legt neuen Memorychannel an. 2 steht fuer Eventchannel, 1 waere data 'eventCh3% := MemChan(2); psthchan:=eventCh6%; l := 300; 'Anzahl der Klassen im PSTH k := 0.001; 'Breite der Bins punkt:=1; spring:=0; spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); while punkt < 37 do PrintLog("Punkt = ", punkt," spring = ", spring); punkt:=nexttime(1,spring); spring:=punkt; vor:=punkt-0.01; nach:=punkt+0.01; MemImport(eventCh6%, trigmem%, vor, nach); 'holt die Daten in den Memorykanal (eventch1) aus inputch% von sTime bis eTime, '2 heisst, wenn daten die schwelle ueberschreiten, 0 heisst dass kein Zeitintervall da sein soll und die letzte Variable gibt die Schwelle (hcursor) 'MemImport(eventCh3%, inputCh%, sTime, eTime, 2, 0, setCutOff1); ChanShow(eventCh6%); 'zeigt den Kanal for x := 1 to 10 do PrintLog("x = ", x," spring = ", spring); spring:=nexttime(1,spring); if spring < 0 then punkt:=-1 endif; next; wend; end; func sortieren100msPFp%() eventCh6b% := MemChan(2); 'legt neuen Memorychannel an. 2 steht fuer Eventchannel, 1 waere data 'eventCh3% := MemChan(2); psthchan:=eventCh6b%; l := 300; 'Anzahl der Klassen im PSTH k := 0.001; 'Breite der Bins punkt:=1; spring:=41; spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); spring:=nexttime(1,spring); while punkt > 0 do PrintLog("Punkt = ", punkt," spring = ", spring); punkt:=nexttime(1,spring); spring:=punkt; vor:=punkt-0.01; nach:=punkt+0.01; MemImport(eventCh6b%, trigmem%, vor, nach); 'holt die Daten in den Memorykanal (eventch1) aus inputch% von sTime bis eTime, '2 heisst, wenn daten die schwelle ueberschreiten, 0 heisst dass kein Zeitintervall da sein soll und die letzte Variable gibt die Schwelle (hcursor) 'MemImport(eventCh3%, inputCh%, sTime, eTime, 2, 0, setCutOff1); ChanShow(eventCh6b%); 'zeigt den Kanal for x := 1 to 10 do PrintLog("x = ", x," spring = ", spring); spring:=nexttime(1,spring); if spring < 0 then punkt:=-1 endif; next; wend; end; func CFPF%() '------------------------------------------------- 'PrintLog(test1," ", test2); Colour(17,10); 'Farbe des PSTHs var nnumber; ' n Zahl ToolbarText("erstelle PSTH"); CursorDelete(-1); 'loescht alle vertikalen Cursor CursorNew(XLow()+1); 'macht neuen Cursor an Stelle links im Fenster + 1 sec CursorNew(Xhigh()-1); Interact("Place the cursors around the region to be analysed...", 1023); CursorRenumber(); curs1:=Cursor(1); curs2:=Cursor(2); SetPSTH(2, l, k, psthoffs, 1); 'erstellt den PSTH View - mit ,0,1 hintendran => zeigt spikes/sec an. Process(curs1, curs2); 'Rechnet das PSTH aus WindowVisible(1); 'zeigt das PSTH Optimise(0); 'Optimiert die Anzeige nnumber:=Sweeps(); 'Weist variable die N Zahl zu PrintLog("n = ", nnumber); return; end;