source: ETALON/SPESO/analysis/loadDataFile.m @ 80

Last change on this file since 80 was 80, checked in by delerue, 10 years ago

Added SPESO analysis code

File size: 5.3 KB
Line 
1%fname='20140127/data_SPESO_2014-01-27_21-15-31_dec.txt.gz'
2%basename='./';
3
4% loadDataFile('20140306/data_SPESO_2014-03-06_15-39-52_dec.txt.gz')
5
6function [data,rateValue,timeCorrection]=loadDataFile(fname)
7basename='./';
8
9%%% Check if the file name starts with the directory
10if (strcmp(fname(1:3),'201'))
11    disp('Name is OK')
12else
13    if (strcmp(fname(1:4),'data'))
14        fname = [ fname(12:15) fname(17:18) fname(20:21) '/' fname ];
15        disp('fname rewritten as');
16        fname
17    else
18        fname
19        disp('Unknown name format... This may not be OK!!!');
20    end
21end
22
23filename=[ basename fname ];
24[res,txt]=system(['gzip -d -c ' filename ]);
25if (~(res==0))
26    error([ 'Error while opening file ' filename '. Error code: ' num2str(res) ])
27end
28
29rangename=strrep(filename,'_dec','_range');
30[res,txtrange]=system(['gzip -d -c ' rangename ]);
31if (~(res==0))
32    error([ 'Error while opening file ' rangename '. Error code: ' num2str(res) ])
33end
34
35base_save_file_name=strrep(strrep(filename,'_dec.txt.gz',''),char(10),'');
36
37
38if (strcmp(txtrange(1:5),'rate='))
39    rateValue=str2num(txtrange(6:end));
40else
41    txtrange(1:5)
42    error('Incorrect range file');
43end
44
45%error('test')
46
47%size(txt)
48
49%char(txt)
50
51tAfterTriger=0.02;
52
53data=str2num(char(txt));
54nData=size(data,1);
55
56durationOneSample=(rateValue*16/(2*3e8))*1.0426; %1/s                                         
57                                          %samplesOneMsec=0.001/(rateValue*16/(2*3e8));
58samplesOneMsec=0.001/(durationOneSample);
59timeRange=[1:nData]*durationOneSample;
60
61timeInMsBetweenTrigger=320;
62
63
64%%%Fit 50Hz on the trigger line
65clear x
66beta(1)=mean( data(:,16));
67beta(2)=max( data(:,16))-min(data(:,16));
68beta(3)=1/(20*samplesOneMsec/(2*pi));
69beta(4)=-250;
70betaInit=beta;
71beta=nlinfit(1:nData, smooth(data(:,16))', @(b,x)(b(1)+b(2).*sin(b(3).*x + b(4))), beta)
72figure(9016)
73clf
74xRange=1:1*20*samplesOneMsec;
75hold on
76plot(xRange, data(xRange,16)','r')
77plot(xRange,(beta(1)+beta(2).*sin(beta(3).*xRange + beta(4))), 'b')
78plot(xRange,(betaInit(1)+betaInit(2).*sin(betaInit(3).*xRange + betaInit(4))), 'g')
79xRange2=xRange+ceil((500*samplesOneMsec));
80plot(xRange, data(xRange2,16)','--r')
81plot(xRange,(beta(1)+beta(2).*sin(beta(3).*xRange2 + beta(4))), '--b')
82plot(xRange,(betaInit(1)+betaInit(2).*sin(betaInit(3).*xRange2 + betaInit(4))), '--m')
83
84xRange=1:nData;
85sum(abs(data(xRange,16)'-(beta(1)+beta(2).*sin(beta(3).*xRange + beta(4)))))
86
87
88figure(9116)
89clf
90xRange=1:10*20*samplesOneMsec;
91hold on
92plot(xRange,data(xRange,16)'-(beta(1)+beta(2).*sin(beta(3).*xRange + beta(4))), 'b')
93
94figure(9216)
95clf
96xRange=1:nData;
97hold on
98plot(xRange,data(xRange,16)'-(beta(1)+beta(2).*sin(beta(3).*xRange + beta(4))), 'b')
99
100iloop=16;
101    figure(9300+iloop)
102    clf
103    hold on
104    plotRange=[ceil(326*samplesOneMsec):ceil(327*samplesOneMsec)];
105    plotRange=[ceil(0.001*samplesOneMsec):ceil(30*samplesOneMsec)];
106    plot(plotRange*(rateValue*16/(2*3e8)),data(plotRange,iloop)'-(beta(1)+beta(2).*sin(beta(3).*plotRange + beta(4))),'r')
107    plotRange2=plotRange+ceil(timeInMsBetweenTrigger*samplesOneMsec);
108        plot(plotRange*(rateValue*16/(2*3e8)),data(plotRange2,iloop)'-(beta(1)+beta(2).*sin(beta(3).*plotRange2 + beta(4))),'b')
109    plotRange2=plotRange2+ceil(timeInMsBetweenTrigger*samplesOneMsec);
110        plot(plotRange*(rateValue*16/(2*3e8)),data(plotRange2,iloop)'-(beta(1)+beta(2).*sin(beta(3).*plotRange2 + beta(4))),'g')
111    plotRange2=plotRange2+ceil(timeInMsBetweenTrigger*samplesOneMsec);
112            plot(plotRange*(rateValue*16/(2*3e8)),data(plotRange2,iloop)'-(beta(1)+beta(2).*sin(beta(3).*plotRange2 + beta(4))),'c')
113    grid on         
114
115    %    beta(3)-betaInit(3)
116    timeCorrection=beta(3)/betaInit(3)
117    %    2*(beta(3)-betaInit(3))/(beta(3)+betaInit(3))
118   
119
120    %%% Correct the timing taking into account the 50Hz fit
121    durationOneSample=durationOneSample*timeCorrection; %1/s                                         
122                                          %samplesOneMsec=0.001/(rateValue*16/(2*3e8));
123samplesOneMsec=0.001/(durationOneSample);
124timeRange=[1:nData]*durationOneSample;
125
126
127    pAfterTrigger=ceil(20*samplesOneMsec);
128   
129    %for iloop=[16 8 12 15 13 10 14 ]
130for iloop=1:16
131   
132    figure(iloop)
133    clf
134    plot(pAfterTrigger:nData,data(pAfterTrigger:end,iloop))
135    grid on
136    print('-dpng',[ base_save_file_name '_channel_' num2str(iloop) '.png' ]);
137
138   
139    %    for tloop=1:4
140    for tloop=1:-1
141    allStartTimeMs=[ 20 30 38 40] ;
142    allEndTimeMs=[ 200 75 45 41];
143
144            startTimeMs=allStartTimeMs(tloop);
145    endTimeMs=allEndTimeMs(tloop);
146
147    figure((tloop*100)+iloop)
148    clf   
149        hold on
150        title({strrep(fname,'_',' ');['Plot from ' num2str(startTimeMs) ' ms to '  num2str(endTimeMs) ' ms']});
151    nTriggerPlusTime=floor(((nData)-(endTimeMs*samplesOneMsec))/(timeInMsBetweenTrigger*samplesOneMsec));
152    for jloop=1:nTriggerPlusTime   
153        plotRange=[ceil(startTimeMs*samplesOneMsec):ceil(startTimeMs*samplesOneMsec)+(endTimeMs-startTimeMs)*samplesOneMsec];
154        dataRange=plotRange+floor(((jloop-1)*(timeInMsBetweenTrigger*samplesOneMsec)));
155        plot(plotRange*durationOneSample,data(dataRange,iloop),getCol(jloop))
156    end
157    grid on   
158    if ((tloop==1)||(tloop==4))
159    print('-dpng',[ base_save_file_name '_channel_' num2str(iloop) '_folded_from_'  num2str(startTimeMs) 'ms_to_'  num2str(endTimeMs) '_ms.png' ]);
160    end
161end
162
163
164end %function
Note: See TracBrowser for help on using the repository browser.