'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, test2; var feti, setia, setib, seti[5001], counter, trig, trigp1, start; var trigmem%:=-1; var avgint, intl, intr, offs, links, rechts, divavg, evchan; var psthoffs, events, sum, dump, evint, viewtemp%; var legal$, text$; var eventmem%:=-1; events := 5; 'Kanal, in den FETi/SETi-events geschrieben werden sollen evchan := 2; 'Kanal, der F2-Ableitung enthaelt l := 100; 'Anzahl der Klassen im PSTH k := 0.05; 'Klassenbreite in s psthoffs := 3; 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(1, "trigger", trigger%); ToolbarSet(2, "Stop", stop%); ToolbarSet(3, "setiev", setiev%); ToolbarSet(4, "psth", psth%); ToolbarSet(5, "Loeschen Memchan", loesch%); 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, trigmem%); '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 var gesamtspikes; var durchschnittspikes; gesamtspikes:=count (1,0,l); durchschnittspikes:=gesamtspikes/nnumber; ' count cann auch mit Cursors im PSTHview gemacht werden (im PSTH von einem Cursor zum naechsten zaehlen) PrintLog("n = ", nnumber, " Gesamtanzahl Spikes = ", gesamtspikes , " Durchschnitt = ", durchschnittspikes); 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;