diff --git a/gen_seq_stats.m b/gen_seq_stats.m new file mode 100644 index 0000000000000000000000000000000000000000..7589dd3e011b13d13b724cd713a4e7a76c63daea --- /dev/null +++ b/gen_seq_stats.m @@ -0,0 +1,223 @@ +clear all; + +%seq_stats_s017_t010.txt +%seq_stats_s030_t011.txt +%seq_stats_s098_t011.txt +%seq_stats_s110_t011.txt + + +history_size = 1000; + +max_num_sensors = 120 +max_num_targets = 20 + +for num_sensors=1:max_num_sensors + + +for num_targets=1:max_num_targets + + + +clear header; +clear block; +clear footer; + +seq_name = sprintf('seq_stats_s%03d_t%03d.txt',num_sensors,num_targets); + +header{1} = '#'; +header{2} = '# Description: $description'; +header{3} = '# Author: Giulio Gaio'; +header{4} = '# Date: 2020/04/06'; +header{5} = '#'; +header{6} = sprintf('# This sequence perform statistics on %d sensors and %d targets',num_sensors,num_targets); +header{7} = '#'; + +cnt = 0; + +cnt = cnt + 1; +blk{cnt}=sprintf('step%d;(write(this/AbortFlag) = 0) && (write(this/PauseFlag) = 0) && goto(%d);Init variables;Error init variables;-1',cnt,cnt+1); +cnt = cnt + 1; +blk{cnt}=sprintf('step%d;exec($pycalcstat $selfseq $propertyseq) == 0 ? goto(%d) : goto(-1);Running $pycalcstat;Error running $pycalcstat;-1',cnt,cnt+1); + + +% dynamic attributes +cnt = 0; + +cnt = cnt + 1; +footer{cnt} = 'attr;BufferLength;long;0'; % number of samples +cnt = cnt + 1; +footer{cnt} = 'attr;AcquisitionLength;long;0'; % number of samples +cnt = cnt + 1; +footer{cnt} = 'attr;AcquisitionPeriod;double;0'; % seconds +cnt = cnt + 1; +footer{cnt} = 'attr;ValidSamplesPerc;double;0'; % from 0 to 1 +cnt = cnt + 1; +footer{cnt} = 'attr;AbortFlag;bool;0'; +cnt = cnt + 1; +footer{cnt} = 'attr;PauseFlag;bool;0'; +cnt = cnt + 1; +footer{cnt} = 'attr;InitAtStartupFlag;bool;1'; +cnt = cnt + 1; +footer{cnt} = 'attr;ProcessingTime;double;0'; % seconds +cnt = cnt + 1; +footer{cnt} = 'attr;IdleTime;double;0'; % seconds +cnt = cnt + 1; +footer{cnt} = 'attr;AcquisitionTime;double;0'; % seconds +cnt = cnt + 1; +footer{cnt} = 'attr;LPFilter;double;1'; % seconds +cnt = cnt + 1; +footer{cnt} = 'attr;EnablePolling;bool;0'; % seconds +cnt = cnt + 1; +footer{cnt} = 'attr;DisablePolling;bool;0'; % seconds +cnt = cnt + 1; +footer{cnt} = sprintf('attr;NumSensors;long;%d',num_sensors); % read olny +cnt = cnt + 1; +footer{cnt} = sprintf('attr;NumTargets;long;%d',num_targets); % read olny + +for i=1:num_sensors + % Read / Write attributes + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_SensorName;string;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_SensorDesc;string;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Enable;bool;1',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_EnableStates;long;65535',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_EnableTargets;long;%d',i,2^num_targets-1); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_MinThresVal;double;-1000',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_MaxThresVal;double;1000',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_LowThresPerc;double;0',i); % from 0 to 1 + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_HighThresPerc;double;1',i); % from 0 to 1 + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_CoeffVarMeanExp;double;1',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_CoeffVarStdExp;double;1',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_SampleShift;double;0',i); + % Read only attributes + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_AcqState;long;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_BunchNumberStart;long;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_BunchNumberEnd;long;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Mean;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_MinMax;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Min;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Max;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Median;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Std;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Skew;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Kurt;double;1',i); + + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_ValidSamples;long;0',i); + % History + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Mean_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Median_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Std_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Skew_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Kurt_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Min_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_Max_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_MinMax_History;double[%d];nomemo',i,history_size); + + % Correlation attributes + for j=1:num_targets + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_Corr_MinThresVal;double;-1',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_Corr_MaxThresVal;double;1',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_CorrFiltAbs_MinThresVal;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_CorrFiltAbs_MaxThresVal;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_Corr;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_CorrFiltAbs;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_CorrLow;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_CorrHigh;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_Direction;double;0',i,j); + % History + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_Corr_History;double[%d];nomemo',i,j,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_CorrFiltAbs_History;double[%d];nomemo',i,j,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_CorrLow_History;double[%d];nomemo',i,j,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;s%03d_t%03d_CorrHigh_History;double[%d];nomemo',i,j,history_size); + end +end + + +for i=1:num_targets + % Read / Write attributes + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_TargetName;string;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_TargetDesc;string;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Enable;bool;1',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_EnableStates;long;65535',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_EnableTargets;long;%d',i,2^num_targets-1); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_MinThresVal;double;-1000',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_MaxThresVal;double;1000',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_LowThresPerc;double;0',i); % from 0 to 1 + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_HighThresPerc;double;1',i); % from 0 to 1 + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_CoeffVarMeanExp;double;1',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_CoeffVarStdExp;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_SampleShift;double;0',i); + % Read only attributes + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_AcqState;long;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_BunchNumberStart;long;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_BunchNumberEnd;long;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Mean;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_MinMax;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Min;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Max;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Median;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Std;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Skew;double;0',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Kurt;double;1',i); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_ValidSamples;long;0',i); + + % History + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Mean_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Median_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Std_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Skew_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Kurt_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Min_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_Max_History;double[%d];nomemo',i,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_MinMax_History;double[%d];nomemo',i,history_size); + + % Correlation attributes + for j=i+1:num_targets + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_Corr;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_Corr_MinThresVal;double;-1',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_Corr_MaxThresVal;double;1',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_CorrFiltAbs;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_CorrFiltAbs_MinThresVal;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_CorrFiltAbs_MaxThresVal;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_CorrLow;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_CorrHigh;double;0',i,j); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_Direction;double;0',i,j); + % History + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_Corr_History;double[%d];nomemo',i,j,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_CorrFiltAbs_History;double[%d];nomemo',i,j,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_CorrLow_History;double[%d];nomemo',i,j,history_size); + cnt = cnt + 1;footer{cnt} = sprintf('attr;t%03d_t%03d_CorrHigh_History;double[%d];nomemo',i,j,history_size); + end +end + + +fileID = fopen(seq_name,'w'); +for i=1:size(header,2) + fprintf(fileID,'%s\n',header{i}); +end +for i=1:size(blk,2) + fprintf(fileID,'%s\n',blk{i}); +end +for i=1:size(footer,2) + fprintf(fileID,'%s\n',footer{i}); +end + +fclose(fileID); + +end % for target + +end % for sensor + + + +% Wildcards +% $description= +% $devmon_attr=seq/monitor/dcct_sr/ErrorCount +% $devtime_attr=sequencer/test/seq_util.01/Date[0] +% $sleep_thread=1 +% $sleep_monitor=3 +% $sleep_write=1 +% $devattr1$= +% $devattr2$= +% $devattr3$= +% ......... +