samer@0: ;;; extract one component of a vector and put it in a VDouble samer@0: (define-method (signal name) (VDouble. name)) samer@0: (define-method (signal vec i) samer@0: (node (.getNode vec) samer@0: (let ((sig (VDouble. (.toString i)))) samer@0: (addtask (VectorToDouble. vec i sig)) samer@0: sig samer@0: ) samer@0: ) samer@0: ) samer@0: samer@0: ;;; lagged signal histogram samer@0: (define (sig:hist sig) samer@0: (define sigwin (SignalWindow. sig 4 1)) samer@0: (define hist (JointHistogram. (.output sigwin) 0 4)) samer@0: (addtasks sigwin (.flushTask sigwin) hist) samer@0: (put "jointhist" hist) samer@0: hist samer@0: ) samer@0: samer@0: (define (sig:- bigE smallE dE) samer@0: (addtask (GenerateDouble. dE samer@0: (Difference. bigE smallE))) samer@0: dE samer@0: ) samer@0: samer@0: ;;; make a task to write all sigs in siglist samer@0: (define (sig:write base siglist) samer@0: ;;; map a VDouble to a DoubleWriter samer@0: (define (sig->writer x) samer@0: (.mkdirs (java.io.File. base)) samer@0: (DoubleWriter. x samer@0: (buffer (ofstream (cat base "/" (.getLabel x) ".txt"))) samer@0: #f)) samer@0: samer@0: ;;; now map all signals to writers and make CompoundTask samer@0: (apply seq (map sig->writer siglist)) samer@0: ) samer@0: samer@0: samer@0: