0001 function r = results_rfi(startMjd,endMjd,basedir)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 statFile = open([basedir 'stat_flag_results.mat']);
0014
0015 disp([basedir 'stat_flag_results.mat']);
0016
0017
0018 statUtc = statFile.statUtcVec;
0019 statFlag = statFile.statFlagArray_f;
0020
0021
0022
0023
0024
0025 candidateFile = open([basedir 'rfi_candidates.mat']);
0026
0027
0028
0029 candidateUtc = candidateFile.candidateUtc;
0030 candidateLen = candidateFile.candidateLen;
0031 candidateSet_f = candidateFile.candidateSet_f;
0032 candidateSetA_f = candidateFile.candidateSetA_f;
0033 candidateSetZ_f = candidateFile.candidateSetZ_f;
0034 candidateSet_p = candidateFile.candidateSet_p;
0035 candidateSetA_p = candidateFile.candidateSetA_p;
0036 candidateSetZ_p = candidateFile.candidateSetZ_p;
0037 candidateVer = candidateFile.candidateVer;
0038
0039
0040
0041
0042 paramFile = open([basedir 'params.mat']);
0043 pArray_f = paramFile.pArray_f;
0044 pArray_p = paramFile.pArray_p;
0045
0046
0047
0048 nSets = size(pArray_f,2);
0049
0050
0051
0052 rfiplotdir = cell(nSets,2);
0053 for k=1:nSets
0054
0055 rfiplotdir(k,1) = {[basedir 'rfiplots_filtered_' int2str(k) '/']};
0056
0057 if ~exist(char(rfiplotdir(k,1)),'dir')
0058 mkdir(char(rfiplotdir(k,1)));
0059 end
0060
0061
0062 rfiplotdir(k,2) = {[basedir 'rfiplots_polonly_' int2str(k) '/']};
0063
0064 if ~exist(char(rfiplotdir(k,2)),'dir')
0065 mkdir(char(rfiplotdir(k,2)));
0066 end
0067 end
0068
0069 disp('hello');
0070
0071
0072
0073
0074 canPlot = (candidateVer ~= 0) | ...
0075 (max(candidateSet_f,[],2) > 0) | (max(candidateSet_p,[],2) > 0);
0076
0077 canUtcPlot = candidateUtc(canPlot);
0078 canLenPlot = candidateLen(canPlot);
0079 canSetFPlot = candidateSet_f(canPlot,:);
0080 canSetPPlot = candidateSet_p(canPlot,:);
0081 canVerPlot = candidateVer(canPlot);
0082
0083
0084
0085
0086 nTimes = round(10 * (endMjd - startMjd));
0087
0088
0089
0090 nPlot = sum(canPlot);
0091
0092 l = 0;
0093 while (1)
0094 l = l + 1;
0095
0096
0097 filePre = [char(rfiplotdir(1,2)) mjd2string(canUtcPlot(l))];
0098 if ~(exist([filePre '_R.png'],'file') || ...
0099 exist([filePre '_F.png'],'file') || ...
0100 exist([filePre '_M.png'],'file') || ...
0101 exist([filePre '_O.png'],'file'))
0102 break;
0103 end
0104
0105 if (l == nPlot)
0106 l = l + 1;
0107 break;
0108 end
0109 end
0110
0111
0112
0113
0114 disp('Looping over the time segments...');
0115 for k=1:nTimes
0116
0117 if l > nPlot
0118 disp('All plots generated...');
0119 break;
0120 end
0121
0122
0123 startSec = mjd2string(startMjd + 0.1 * (k-1) - 5/24/60);
0124 endSec = mjd2string(startMjd + 0.1 * k + 5/24/60);
0125
0126 disp(['Data from ' startSec ' to ' endSec]);
0127
0128
0129
0130 if canUtcPlot(l) >= tstr2mjd(endSec)
0131 disp('No plots for this data range...');
0132 continue;
0133 end
0134
0135
0136
0137 [d, pointFlag, galacticFlag, sunFlag, moonFlag] = ...
0138 read_posflag(startSec,endSec);
0139
0140 utcVec = d.antenna0.receiver.utc;
0141 I1Vec = d.antenna0.receiver.data(:,1);
0142 QVec = 0.5*(d.antenna0.receiver.data(:,2) + ...
0143 d.antenna0.receiver.data(:,4));
0144 UVec = 0.5*(d.antenna0.receiver.data(:,3) - ...
0145 d.antenna0.receiver.data(:,5));
0146 I2Vec = d.antenna0.receiver.data(:,6);
0147
0148
0149
0150
0151
0152 while (l <= nPlot && (canUtcPlot(l)+max(10.5*canLenPlot(l),3000)/8640000) < tstr2mjd(endSec))
0153
0154 disp(['Candidate ' int2str(l) ' out of ' int2str(nPlot)]);
0155
0156 canBuffer = max(10*canLenPlot(l),3000);
0157
0158
0159
0160 canStart = max(1,ceil((canUtcPlot(l) - utcVec(1)) * 8640000 - canBuffer));
0161
0162 canEnd = min(length(utcVec),floor((canUtcPlot(l) - utcVec(1)) * 8640000 + canBuffer));
0163
0164
0165
0166
0167
0168 I1Med = median(I1Vec(canStart:canEnd));
0169 I1Range = range(I1Vec(canStart:canEnd));
0170 QMed = median(QVec(canStart:canEnd));
0171 QRange = range(QVec(canStart:canEnd));
0172 UMed = median(UVec(canStart:canEnd));
0173 URange = range(UVec(canStart:canEnd));
0174 I2Med = median(I2Vec(canStart:canEnd));
0175 I2Range = range(I2Vec(canStart:canEnd));
0176
0177 maxRange = max(max([I1Range QRange URange I2Range]),5);
0178 [~, fStart] = min(abs(statUtc - utcVec(canStart)));
0179 [~, fEnd] = min(abs(statUtc - utcVec(canEnd)));
0180
0181
0182 tVec = (utcVec(canStart:canEnd) - canUtcPlot(l)) * 24 * 3600;
0183
0184
0185
0186 for m=1:nSets
0187
0188 if canVerPlot(l) == 0 && ...
0189 canSetFPlot(l,m) == 0 && canSetPPlot(l,m) == 0
0190 continue
0191 end
0192
0193 figure('visible','off');
0194
0195
0196 axis([min(tVec), max(tVec), -1.5*maxRange, 1.5*maxRange]);
0197 hold on;
0198
0199
0200
0201 flagplot(tVec,sunFlag(canStart:canEnd),[0.8 0.7 0.7],maxRange);
0202 flagplot(tVec,moonFlag(canStart:canEnd),[0.7 0.7 0.8],maxRange);
0203 flagplot(tVec,galacticFlag(canStart:canEnd),[0.7 0.8 0.7],maxRange);
0204 flagplot(tVec,pointFlag(canStart:canEnd),[0.7 0.7 0.7],maxRange);
0205
0206
0207
0208 plot(tVec,I1Vec(canStart:canEnd) - I1Med + maxRange,'b');
0209 plot(tVec,QVec(canStart:canEnd) - QMed + maxRange/3,'r');
0210 plot(tVec,UVec(canStart:canEnd) - UMed - maxRange/3,'g');
0211 plot(tVec,I2Vec(canStart:canEnd) - I2Med - maxRange,'m');
0212
0213
0214 plot(86400*(statUtc(fStart:fEnd)-canUtcPlot(l)), ...
0215 maxRange*(statFlag(fStart:fEnd,m)-0.5), 'k');
0216
0217
0218 legend('Sun', 'Moon', 'Galaxy', 'Point Sources', ...
0219 'I1', 'Q', 'U', 'I2', 'Flag');
0220 xlabel('Time (s)');
0221 ylabel('Power (s)');
0222 title(mjd2string(canUtcPlot(l)));
0223
0224 hold off;
0225
0226
0227
0228 if canVerPlot(l) == 1 && canSetFPlot(l,m) == 1
0229 outfilename = [char(rfiplotdir(m,1)) mjd2string(canUtcPlot(l)) '_R.png'];
0230 elseif canVerPlot(l) == 1 && canSetFPlot(l,m) == 0
0231 outfilename = [char(rfiplotdir(m,1)) mjd2string(canUtcPlot(l)) '_M.png'];
0232 elseif canVerPlot(l) == 0 && canSetFPlot(l,m) == 1
0233 outfilename = [char(rfiplotdir(m,1)) mjd2string(canUtcPlot(l)) '_F.png'];
0234 else
0235 outfilename = [char(rfiplotdir(m,1)) mjd2string(canUtcPlot(l)) '_O.png'];
0236 end
0237
0238 print('-dpng', outfilename);
0239
0240
0241 if canVerPlot(l) == 1 && canSetPPlot(l,m) == 1
0242 outfilename = [char(rfiplotdir(m,2)) mjd2string(canUtcPlot(l)) '_R.png'];
0243 elseif canVerPlot(l) == 1 && canSetPPlot(l,m) == 0
0244 outfilename = [char(rfiplotdir(m,2)) mjd2string(canUtcPlot(l)) '_M.png'];
0245 elseif canVerPlot(l) == 0 && canSetPPlot(l,m) == 1
0246 outfilename = [char(rfiplotdir(m,2)) mjd2string(canUtcPlot(l)) '_F.png'];
0247 else
0248 outfilename = [char(rfiplotdir(m,2)) mjd2string(canUtcPlot(l)) '_O.png'];
0249 end
0250
0251 print('-dpng', outfilename);
0252
0253 close(gcf);
0254 end
0255
0256
0257 l = l + 1;
0258
0259 end
0260
0261 end
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272
0273
0274
0275
0276
0277
0278
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289
0290
0291
0292
0293
0294
0295
0296
0297
0298
0299
0300
0301
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334
0335
0336
0337
0338
0339
0340
0341
0342
0343
0344
0345
0346
0347
0348
0349
0350
0351
0352
0353
0354
0355
0356
0357
0358
0359
0360
0361
0362
0363
0364
0365
0366
0367
0368
0369
0370
0371
0372
0373
0374
0375
0376
0377
0378
0379
0380
0381
0382
0383
0384
0385
0386
0387 falseRate = zeros(nSets,2);
0388 falseErr = zeros(nSets,2);
0389 catchRate = zeros(nSets,2);
0390 catchErr = zeros(nSets,2);
0391
0392
0393 for k=1:nSets
0394
0395 disp(['Parameter set: ' int2str(k)]);
0396
0397
0398 for l=1:2
0399
0400 switch l
0401 case 1
0402 candidateSet = candidateSet_f;
0403 candidateSetA = candidateSetA_f;
0404 candidateSetZ = candidateSetZ_f;
0405 case 2
0406 candidateSet = candidateSet_p;
0407 candidateSetA = candidateSetA_p;
0408 candidateSetZ = candidateSetZ_p;
0409 end
0410
0411
0412 falseRate(k,l) = sum((candidateSet(:,k) & (candidateVer == 0)) .* ...
0413 candidateLen) / (24*3600*100*(endMjd-startMjd));
0414
0415 falseA = sum((candidateSetA(:,k) & (candidateVer == 0)) .* ...
0416 candidateLen) / (24*3600*100*(endMjd-startMjd));
0417 falseZ = sum((candidateSetZ(:,k) & (candidateVer == 0)) .* ...
0418 candidateLen) / (24*3600*100*(endMjd-startMjd));
0419
0420 falseErr(k,l) = abs((falseZ - falseA) / 2);
0421
0422
0423
0424 catchRate(k,l) = sum(candidateSet(:,k) & (candidateVer == 1)) ./ ...
0425 sum(candidateVer == 1);
0426
0427 catchA = sum(candidateSetA(:,k) & (candidateVer == 1)) ./ ...
0428 sum(candidateVer == 1);
0429 catchZ = sum(candidateSetZ(:,k) & (candidateVer == 1)) ./ ...
0430 sum(candidateVer == 1);
0431
0432 catchErr(k,l) = abs((catchZ - catchA) / 2);
0433
0434 end
0435 end
0436
0437
0438
0439
0440 save([basedir 'params.mat'], 'pArray_f', 'pArray_p', ...
0441 'falseRate', 'falseErr', 'catchRate', 'catchErr');
0442
0443
0444
0445
0446
0447
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460
0461
0462
0463
0464
0465
0466
0467
0468
0469
0470
0471
0472
0473
0474
0475
0476
0477
0478
0479
0480
0481
0482
0483
0484
0485
0486
0487
0488
0489
0490
0491
0492
0493
0494
0495
0496
0497
0498
0499
0500
0501
0502
0503
0504
0505
0506
0507
0508
0509
0510
0511
0512
0513
0514 r = 1;
0515 end
0516
0517
0518
0519
0520 function flagplot(tVec,flagVec,flagColour,maxRange)
0521
0522
0523
0524 if max(flagVec) > 0
0525
0526
0527
0528 dFlag = diff(flagVec);
0529
0530 flagStart = find(dFlag > 0);
0531 flagEnd = find(dFlag < 0);
0532
0533 if isempty(flagStart)
0534 flagStart = 1;
0535 end
0536 if isempty(flagEnd)
0537 flagEnd = length(flagVec);
0538 end
0539 if flagEnd(1) < flagStart(1)
0540 flagStart = cat(1,1,flagStart);
0541 end
0542 if flagEnd(end) < flagStart(end)
0543 flagEnd = cat(1,flagEnd,length(flagVec));
0544 end
0545
0546
0547 nFlag = length(flagStart);
0548
0549
0550 xVec = zeros(4*nFlag,1);
0551 yVec = zeros(4*nFlag,1);
0552 for k=1:nFlag
0553 xVec(4*k-3) = tVec(flagStart(k));
0554 xVec(4*k-2) = tVec(flagStart(k));
0555 xVec(4*k-1) = tVec(flagEnd(k));
0556 xVec(4*k) = tVec(flagEnd(k));
0557
0558 yVec(4*k-3) = -1.5*maxRange;
0559 yVec(4*k-2) = 1.5*maxRange;
0560 yVec(4*k-1) = 1.5*maxRange;
0561 yVec(4*k) = -1.5*maxRange;
0562 end
0563
0564 else
0565
0566
0567 xVec = [0 0];
0568 yVec = [-2*maxRange -2*maxRange];
0569
0570 end
0571
0572
0573 fill(xVec,yVec,flagColour,'EdgeColor',flagColour);
0574
0575 end