From 3197f4d26c7f7be81599d9ed10946404a76b5f2a Mon Sep 17 00:00:00 2001 From: Alexander Morley Date: Wed, 3 May 2017 11:59:15 +0100 Subject: [PATCH 1/2] Expose RMS detect option --- packages/mountainsort2/algs/ms2_002.js | 3 +++ packages/mountainsort2/algs/ms2_002.pipeline | 1 + packages/mountainsort2/src/mountainsort2_main.cpp | 2 ++ 3 files changed, 6 insertions(+) diff --git a/packages/mountainsort2/algs/ms2_002.js b/packages/mountainsort2/algs/ms2_002.js index 4c2d7b53..de57e406 100644 --- a/packages/mountainsort2/algs/ms2_002.js +++ b/packages/mountainsort2/algs/ms2_002.js @@ -31,6 +31,7 @@ exports.spec=function() { spec0.parameters.push({name:"detect_interval_msec",optional:true,default_value:1}); spec0.parameters.push({name:"detect_threshold",optional:true,default_value:3.0}); spec0.parameters.push({name:"detect_sign",optional:true,default_value:0}); + spec0.parameters.push({name:"detect_rms_window",optional:true,default_value:0}); spec0.parameters.push({name:"consolidate_clusters",optional:true,default_value:'false'}); spec0.parameters.push({name:"consolidation_factor",optional:true,default_value:0.9}); spec0.parameters.push({name:"fit_stage",optional:true,default_value:'false'}); @@ -529,6 +530,7 @@ exports.run=function(opts,callback) { function detect_events(timeseries,event_times_out,central_channel,callback) { var detect_interval=Math.ceil(opts.detect_interval_msec/1000*opts.samplerate); + var detect_rms_window=Math.ceil(opts.detect_rms_window/1000*opts.samplerate); common.mp_exec_process('mountainsort.detect_events', {timeseries:timeseries}, {event_times_out:event_times_out}, @@ -536,6 +538,7 @@ exports.run=function(opts,callback) { central_channel:central_channel, detect_threshold:opts.detect_threshold, detect_interval:detect_interval, + detect_rms_window:detect_rms_window, sign:opts.detect_sign, subsample_factor:opts.subsample_factor||1, _request_num_threads:num_intersegment_threads diff --git a/packages/mountainsort2/algs/ms2_002.pipeline b/packages/mountainsort2/algs/ms2_002.pipeline index 2816e2c8..2a4da8b9 100644 --- a/packages/mountainsort2/algs/ms2_002.pipeline +++ b/packages/mountainsort2/algs/ms2_002.pipeline @@ -6,6 +6,7 @@ function main(params) { detect_interval_msec:0.33, //min separation between two events on same channel (default is 10 samples at 30 KHz) detect_threshold:3.0, //stdevs away from noise detect_sign:0, //-1,0,1 + detect_rms_window:0, //0 does not use RMS power for detect, >0 uses that length window (in samples) whiten:'true', //boolean fit_stage:'true', //boolean segment_duration_sec:3600, //duration of a single time segment for processing diff --git a/packages/mountainsort2/src/mountainsort2_main.cpp b/packages/mountainsort2/src/mountainsort2_main.cpp index dc628d8c..f2df1acd 100644 --- a/packages/mountainsort2/src/mountainsort2_main.cpp +++ b/packages/mountainsort2/src/mountainsort2_main.cpp @@ -118,6 +118,7 @@ QJsonObject get_spec() X.addOutputs("event_times_out"); X.addRequiredParameters("central_channel", "detect_threshold", "detect_interval", "sign"); X.addOptionalParameter("subsample_factor", "", 1); + X.addOptionalParameter("detect_rms_window", "", 0); processors.push_back(X.get_spec()); } { @@ -404,6 +405,7 @@ int main(int argc, char* argv[]) opts.central_channel = CLP.named_parameters["central_channel"].toInt(); opts.detect_threshold = CLP.named_parameters["detect_threshold"].toDouble(); opts.detect_interval = CLP.named_parameters["detect_interval"].toDouble(); + opts.detect_rms_window = CLP.named_parameters["detect_rms_window"].toDouble(); opts.sign = CLP.named_parameters["sign"].toInt(); opts.subsample_factor = CLP.named_parameters["subsample_factor"].toDouble(); ret = p_detect_events(timeseries, event_times_out, opts); From 3da7dc6cc736d7d197812f1136f9a9eb98a980e5 Mon Sep 17 00:00:00 2001 From: Alexander Morley Date: Wed, 3 May 2017 12:03:48 +0100 Subject: [PATCH 2/2] Expose RMS detect option merge --- packages/mountainsort2/algs/ms2_002.js | 3 +++ packages/mountainsort2/algs/ms2_002.pipeline | 1 + packages/mountainsort2/src/mountainsort2_main.cpp | 2 ++ 3 files changed, 6 insertions(+) diff --git a/packages/mountainsort2/algs/ms2_002.js b/packages/mountainsort2/algs/ms2_002.js index 4c2d7b53..de57e406 100644 --- a/packages/mountainsort2/algs/ms2_002.js +++ b/packages/mountainsort2/algs/ms2_002.js @@ -31,6 +31,7 @@ exports.spec=function() { spec0.parameters.push({name:"detect_interval_msec",optional:true,default_value:1}); spec0.parameters.push({name:"detect_threshold",optional:true,default_value:3.0}); spec0.parameters.push({name:"detect_sign",optional:true,default_value:0}); + spec0.parameters.push({name:"detect_rms_window",optional:true,default_value:0}); spec0.parameters.push({name:"consolidate_clusters",optional:true,default_value:'false'}); spec0.parameters.push({name:"consolidation_factor",optional:true,default_value:0.9}); spec0.parameters.push({name:"fit_stage",optional:true,default_value:'false'}); @@ -529,6 +530,7 @@ exports.run=function(opts,callback) { function detect_events(timeseries,event_times_out,central_channel,callback) { var detect_interval=Math.ceil(opts.detect_interval_msec/1000*opts.samplerate); + var detect_rms_window=Math.ceil(opts.detect_rms_window/1000*opts.samplerate); common.mp_exec_process('mountainsort.detect_events', {timeseries:timeseries}, {event_times_out:event_times_out}, @@ -536,6 +538,7 @@ exports.run=function(opts,callback) { central_channel:central_channel, detect_threshold:opts.detect_threshold, detect_interval:detect_interval, + detect_rms_window:detect_rms_window, sign:opts.detect_sign, subsample_factor:opts.subsample_factor||1, _request_num_threads:num_intersegment_threads diff --git a/packages/mountainsort2/algs/ms2_002.pipeline b/packages/mountainsort2/algs/ms2_002.pipeline index 2816e2c8..daacf5f2 100644 --- a/packages/mountainsort2/algs/ms2_002.pipeline +++ b/packages/mountainsort2/algs/ms2_002.pipeline @@ -6,6 +6,7 @@ function main(params) { detect_interval_msec:0.33, //min separation between two events on same channel (default is 10 samples at 30 KHz) detect_threshold:3.0, //stdevs away from noise detect_sign:0, //-1,0,1 + detect_rms_window:0, //0 does not use RMS power for detect, >0 uses that length window (in milliseconds) whiten:'true', //boolean fit_stage:'true', //boolean segment_duration_sec:3600, //duration of a single time segment for processing diff --git a/packages/mountainsort2/src/mountainsort2_main.cpp b/packages/mountainsort2/src/mountainsort2_main.cpp index dc628d8c..f2df1acd 100644 --- a/packages/mountainsort2/src/mountainsort2_main.cpp +++ b/packages/mountainsort2/src/mountainsort2_main.cpp @@ -118,6 +118,7 @@ QJsonObject get_spec() X.addOutputs("event_times_out"); X.addRequiredParameters("central_channel", "detect_threshold", "detect_interval", "sign"); X.addOptionalParameter("subsample_factor", "", 1); + X.addOptionalParameter("detect_rms_window", "", 0); processors.push_back(X.get_spec()); } { @@ -404,6 +405,7 @@ int main(int argc, char* argv[]) opts.central_channel = CLP.named_parameters["central_channel"].toInt(); opts.detect_threshold = CLP.named_parameters["detect_threshold"].toDouble(); opts.detect_interval = CLP.named_parameters["detect_interval"].toDouble(); + opts.detect_rms_window = CLP.named_parameters["detect_rms_window"].toDouble(); opts.sign = CLP.named_parameters["sign"].toInt(); opts.subsample_factor = CLP.named_parameters["subsample_factor"].toDouble(); ret = p_detect_events(timeseries, event_times_out, opts);