wavescope
play

WaveScope Ryan Newton MIT/CSAIL Work with: Lewis Girod, Kyle - PowerPoint PPT Presentation

WaveScope Ryan Newton MIT/CSAIL Work with: Lewis Girod, Kyle Jamieson, Yuan Mei, Stan Rost, Arvind Thiagarajan, Hari Balakrishnan, Sam Madden http://wavescope.csail.mit.edu/ Motivation: Stream + Signal Processing


  1. WaveScope Ryan Newton MIT/CSAIL Work with: Lewis Girod, Kyle Jamieson, Yuan Mei, Stan Rost, Arvind Thiagarajan, Hari Balakrishnan, Sam Madden http://wavescope.csail.mit.edu/

  2. Motivation: Stream + Signal Processing http://wavescope.csail.mit.edu/

  3. Motivation: Stream + Signal Processing • Pipeline leak detection and localization Are there anomalies in the frequency response to an introduced pulse? http://wavescope.csail.mit.edu/

  4. Motivation: Stream + Signal Processing • Pipeline leak detection and localization • Seizure onset detection using EEG Is a seizure Are there anomalies in imminent given the frequency response signals from various to an introduced pulse? brain regions? http://wavescope.csail.mit.edu/

  5. Motivation: Stream + Signal Processing • Pipeline leak detection and localization • Seizure onset detection using EEG • In situ animal behavior studies Is a seizure Are there anomalies in What time imminent given the frequency response ranges contained signals from various to an introduced pulse? marmot calls? brain regions? http://wavescope.csail.mit.edu/

  6. Motivation: Stream + Signal Processing • Pipeline leak detection and localization • Seizure onset detection using EEG • In situ animal behavior studies Is a seizure Are there anomalies in What time imminent given the frequency response ranges contained signals from various to an introduced pulse? marmot calls? brain regions? http://wavescope.csail.mit.edu/

  7. Motivation: Stream + Signal Processing • Pipeline leak detection and localization Limitations of Streaming DBMS • Seizure onset detection using EEG • In situ animal behavior studies • Difficult to extend operator set • Outcalls to Matlab, etc • Embedded support • High per-sample/operator overhead Is a seizure Are there anomalies in What time imminent given the frequency response ranges contained signals from various to an introduced pulse? marmot calls? brain regions? http://wavescope.csail.mit.edu/

  8. WaveScope Features

  9. WaveScope Features High data-rate 4 channels x 48 khz = 400,000 bytes/sec (per node) x 20 nodes

  10. WaveScope Features Embedded, low- power devices High data-rate 4 channels x 48 khz = 400,000 bytes/sec (per node) x 20 nodes

  11. WaveScope Features Embedded, low- power devices High data-rate Signal-oriented data-model 4 channels x 48 khz = 400,000 bytes/sec (per node) x 20 nodes

  12. WaveScope Features Embedded, low- power devices High data-rate Signal-oriented data-model • Flexible windowing • Efficient time-stamping 4 channels x 48 khz = 400,000 bytes/sec (per node) x 20 nodes

  13. WaveScope Features Embedded, low- power devices High data-rate Signal-oriented data-model • Flexible windowing • Efficient time-stamping WaveScript Ch0 = AudioSource(0, 48000, 1024); S = stream_map( FFT, Ch0 ); Language 4 channels S = stream_map(fft, Ch0 ); x 48 khz Ch0 = AudioSource(0, 48000, 1024); = 400,000 bytes/sec (per node) x 20 nodes

  14. WaveScope Features Embedded, low- power devices High data-rate Signal-oriented data-model • Flexible windowing • Efficient time-stamping WaveScript Ch0 = AudioSource(0, 48000, 1024); S = stream_map( FFT, Ch0 ); Language • Not StreamSQL 4 channels S = stream_map(fft, Ch0 ); x 48 khz • Write script to generate query network Ch0 = AudioSource(0, 48000, 1024); = 400,000 bytes/sec (per node) • Query network is optimized, compiled to native code, executed by engine x 20 nodes

  15. Drilling down: Marmot-call application Node Some Marmots http://wavescope.csail.mit.edu/

  16. Drilling down: Marmot-call application • Goal: study calling behavior. Node Some Marmots http://wavescope.csail.mit.edu/

  17. Drilling down: Marmot-call application • Goal: study calling behavior. Node Some Marmots http://wavescope.csail.mit.edu/

  18. Drilling down: Marmot-call application • Goal: study calling behavior. Node Some Marmots http://wavescope.csail.mit.edu/

  19. Drilling down: Marmot-call application • Goal: study calling behavior. Node • Detect, record, localize, classify. Some Marmots http://wavescope.csail.mit.edu/

  20. Schematic of Marmot-detector (Phase1) ProfileDetector <t1,t2,bool> Audio0 <audio window> Audio1 <audio window> sync <w1,w2,w3,w4> Audio2 <audio window> Audio3 <audio window> http://wavescope.csail.mit.edu/

  21. Schematic of Marmot-detector (Phase1) Fast-path DSP to determine temporal ranges for marmot calls ProfileDetector <t1,t2,bool> Audio0 <audio window> Audio1 <audio window> sync <w1,w2,w3,w4> Audio2 <audio window> Audio3 <audio window> http://wavescope.csail.mit.edu/

  22. Schematic of Marmot-detector (Phase1) Stream’s Tuple Schema ProfileDetector <t1,t2,bool> Audio0 <audio window> Audio1 <audio window> sync <w1,w2,w3,w4> Audio2 <audio window> Audio3 <audio window> http://wavescope.csail.mit.edu/

  23. Schematic of Marmot-detector (Phase1) Stream’s Tuple Schema Data Model: ProfileDetector <t1,t2,bool> • Streams are first-class values. Audio0 <audio window> • Streams contain Tuples • One or more unnamed fields: Stream<int,float> Audio1 <audio window> sync <w1,w2,w3,w4> • Fields may also be arrays, Tuples , SigSegs , or Audio2 <audio window> tagged-union datatypes, but not Streams . Audio3 <audio window> • SigSegs: efficiently managed windows of samples • pass-by-reference • cheap to append, copy, forward, rewindow • fewer timestamps http://wavescope.csail.mit.edu/

  24. Schematic of Marmot-detector (Phase1) Stream’s Tuple Schema Data Model: ProfileDetector <t1,t2,bool> • Streams are first-class values. Ch0 = AudioSource(...); Audio0 <audio window> • Streams contain Tuples • One or more unnamed fields: Stream<int,float> Audio1 <audio window> sync <w1,w2,w3,w4> • Fields may also be arrays, Tuples , SigSegs , or Audio2 <audio window> tagged-union datatypes, but not Streams . Audio3 <audio window> • SigSegs: efficiently managed windows of samples • pass-by-reference • cheap to append, copy, forward, rewindow • fewer timestamps http://wavescope.csail.mit.edu/

  25. Schematic of Marmot-detector (Phase1) Stream’s Tuple Schema Data Model: ProfileDetector <t1,t2,bool> • Streams are first-class values. Ch0 = AudioSource(...); Audio0 <audio window> • Streams contain Tuples • One or more unnamed fields: Stream<int,float> Audio1 <audio window> sync <w1,w2,w3,w4> • Fields may also be arrays, Tuples , SigSegs , or Audio2 <audio window> tagged-union datatypes, but not Streams . Audio3 <audio window> • SigSegs: efficiently managed windows of samples • pass-by-reference • cheap to append, copy, A B [4,8) [0,4) forward, rewindow • fewer timestamps S 0 1 2 3 4 5 6 7 8 9 10 ….. http://wavescope.csail.mit.edu/

  26. Schematic of Marmot-detector (Phase1) Stream’s Tuple Schema ProfileDetector <t1,t2,bool> Audio0 <audio window> Audio1 <audio window> sync <w1,w2,w3,w4> Audio2 <audio window> Audio3 <audio window> http://wavescope.csail.mit.edu/

  27. WaveScript Code for Detector ProfileDetector <t1,t2,bool> Audio0 <audio window> Audio1 <audio window> sync <w1,w2,w3,w4> Audio2 <audio window> Audio3 <audio window> http://wavescope.csail.mit.edu/

  28. WaveScript Code for Detector ProfileDetector <t1,t2,bool> Audio0 <audio window> Audio1 <audio window> sync <w1,w2,w3,w4> // Main query, phase 1 Audio2 <audio window> Ch0 = AudioSource(0, 48000, 1024); Audio3 <audio window> Ch1 = AudioSource(1, 48000, 1024); Ch2 = AudioSource(2, 48000, 1024); Ch3 = AudioSource(3, 48000, 1024); control = profileDetect( Ch0 , marmotScore, <64,192> ); datawindows = sync4 ( control , Ch0 , Ch1 , Ch2 , Ch4 ); http://wavescope.csail.mit.edu/

  29. WaveScript Code for Detector ProfileDetector <t1,t2,bool> Audio0 <audio window> Audio1 <audio window> sync <w1,w2,w3,w4> // Main query, phase 1 Audio2 <audio window> Ch0 = AudioSource(0, 48000, 1024); Audio3 <audio window> Ch1 = AudioSource(1, 48000, 1024); Ch2 = AudioSource(2, 48000, 1024); Ch3 = AudioSource(3, 48000, 1024); control = profileDetect( Ch0 , marmotScore, <64,192> ); datawindows = sync4 ( control , Ch0 , Ch1 , Ch2 , Ch4 ); http://wavescope.csail.mit.edu/

  30. WaveScript Code for Detector fun profileDetect(S : Stream<SigSeg<int16>>, scorefun , <winsize,step>) { wins = rewindow(S, winsize, step); ProfileDetector scores : Stream< float > <t1,t2,bool> scores = iterate (w in wins) { emit scorefun ( FFT(w) ); Audio0 <audio window> }; Audio1 <audio window> withscores : Stream<float, SigSeg<int16>> sync <w1,w2,w3,w4> // Main query, phase 1 withscores = zip2(scores, wins); Audio2 <audio window> return threshFilter(withscores); Ch0 = AudioSource(0, 48000, 1024); Audio3 <audio window> } Ch1 = AudioSource(1, 48000, 1024); Ch2 = AudioSource(2, 48000, 1024); Ch3 = AudioSource(3, 48000, 1024); control = profileDetect( Ch0 , marmotScore, <64,192> ); datawindows = sync4 ( control , Ch0 , Ch1 , Ch2 , Ch4 ); http://wavescope.csail.mit.edu/

Recommend


More recommend